组合——聚合

组合——聚合

1.区别
(1)聚合 aggregation
一个类的实例作为另一个类的属性,我们把这称之为“对象聚合”。
当一个类的实例成为另一个类的成员,我们就说这两个类之间存在着“has a"的关系。
(2)组合 composition

在这里插入图片描述
左图.聚合:部分与整体关系松散,为开辟空间,浅拷贝
右图.组合:部分与整体关系紧密,开辟空间,深拷贝

组合和聚合是有很大区别的,这个区别不是在形式上,而是在本质上:
比如A类中包含B类的一个引用b,当A类的一个对象消亡时,b这个引用所指向的对象也同时消亡(没有任何一个引用指向它,成了垃圾对象),这种情况叫做组合,反之b所指向的对象还会有另外的引用指向它,这种情况叫聚合。

现实生活中:
人和手,脚是组合关系,因为当人死亡后人的手也就不复存在了。人和他的电脑是聚合关系。

2.实例
在这里插入图片描述
在这里插入图片描述