是什么使合成与聚合不同,它们都被声明为私有,是否在合成示例中我们在offline
的构造函数中创建Address
类的对象,如果这是如何使{ {1}}对象控制/拥有Person
对象。
Person
员工阶层
Address
答案 0 :(得分:0)
好吧,首先让我开始解释聚合和构成之间的区别。
汇总: 1.处于聚合关系中的子代可以独立于父代而存在 2.汇总可以读为“ HAS A”
示例:如果我们有一个Wheel类,则Wheel和Car类之间的关系为一个集合:“一辆汽车有四个轮子”。车轮可以不属于汽车。
组成: 1.构成关系中的孩子不能独立于父母而存在。换句话说,如果无法将子类托管到父类中,则没有子类存在的感觉。 2.构成可以理解为 IS PART OF
示例:如果我们有一个Human类,则Heart和Human类之间的关系就是组成。您从未见过一颗心在自我消散,不是吗?因此,需要组合。
在Java中,我们使用private final
class Human { private final Heart heart; }
聚合只是:
class Wheel { ... }
class Car { private List<Wheel> wheels; }
现在让我们说,我们想完全删除人类类(考虑到他不是器官捐献者)的对象,“组合”关系迫使我们破坏与心脏有关的实例对那个人。在“聚合”中,情况并非如此,如果曾经属于的汽车实例损坏了,则轮子可以由其他汽车使用。
我希望这会有所帮助。