以下两个示例之间的区别是什么?

时间:2019-04-23 18:25:28

标签: java oop

是什么使合成与聚合不同,它们都被声明为私有,是否在合成示例中我们在offline的构造函数中创建Address类的对象,如果这是如何使{ {1}}对象控制/拥有Person对象。

Person

员工阶层

Address

1 个答案:

答案 0 :(得分:0)

好吧,首先让我开始解释聚合和构成之间的区别。

汇总:  1.处于聚合关系中的子代可以独立于父代而存在  2.汇总可以读为“ HAS A”

示例:如果我们有一个Wheel类,则Wheel和Car类之间的关系为一个集合:“一辆汽车有四个轮子”。车轮可以不属于汽车。

组成:  1.构成关系中的孩子不能独立于父母而存在。换句话说,如果无法将子类托管到父类中,则没有子类存在的感觉。  2.构成可以理解为 IS PART OF

示例:如果我们有一个Human类,则Heart和Human类之间的关系就是组成。您从未见过一颗心在自我消散,不是吗?因此,需要组合。


在Java中,我们使用private final

表示Composition关系。
class Human { private final Heart heart; }

聚合只是:

class Wheel { ... }
class Car { private List<Wheel> wheels; }

现在让我们说,我们想完全删除人类类(考虑到他不是器官捐献者)的对象,“组合”关系迫使我们破坏与心脏有关的实例对那个人。在“聚合”中,情况并非如此,如果曾经属于的汽车实例损坏了,则轮子可以由其他汽车使用。

我希望这会有所帮助。