- java中的组合与聚合区别
- 名称解释:
- 1、*聚合*:
- 指==分散==的聚集到一起
- 2、*组合*:
- 指组织成==整体==。
- 理解 :
- 聚合从字面意思看是将分散的集中到一起,所谓分散,就是各个散点都是独立的。而组合字面意思是强调整体,各部分不能单独成为个体。大家一起拼出一个整体。
- 现实中的例子:
- ==*聚合*==: 柠檬水 = 水+柠檬
- 这里就是柠檬聚合到水中,水与柠檬单独存在。水中加了黄瓜就是黄瓜水。
- ==*组合*== :人= 内脏+头脑+身体(还是这个例子比较贴切)
- 人活着就有心跳。反之心脏对象状态停止。
- java演示:
- java聚合:
- java组合:
class A{
public void cc(B b){
System.out.println(b.show());
}
}
class B{
public void show(){
System.out.println("hello");
}
}
class C{
A a = new A();
B b = new B();
a.cc(b);
}
上面的例子可以看出,B这个对象在A对象调用完任然被C引用,并没有消失。可以看出,如果参照物是A,B与A的关系就是聚合。A使用B时就聚在一起干点事,不用了B也还是可以被别人用。
java组合:class A{
public A(){
B b = new B();
}
b.show();
}
class B{
public void show(){
System.out.println("hello");
}
}
class C{
A a = new A();
}
上面的例子可以看出,B这个对象在A对象调用完自然也就消失了。所以,如果参照物是A,B与A的关系就是组合。B随着A创建一起创建,A的消失一起消失。
以此为例:大家举一反三即可。



