组成和聚合

类和对象可以相互关联。继承描述了一种“IS A”关系。狮子是一种动物。这种关系很容易用继承来表达,其中Animal父类是Lion子类。但并不是世界上的每一种关系都可以这样恰当地描述。比如键盘肯定和电脑有关系,但它不是电脑。手跟人有关系,但又不是人。这些案例代表了一种不同类型的关系——不是“IS A”,而是“HAS A”。手不是人,而是人有手。键盘不是电脑,但电脑有键盘。“有一个”. 这些概念之间的区别在于关系的“严格性”。让我们举一个简单的例子:我们有一个Car. 每辆车都有发动机。此外,每辆车都可以载客。Engine engine字段和字段之间的根本区别是什么Passenger[] passengers?如果乘客A坐在车内,那并不意味着乘客BC不能在车内。一辆车可以容纳多名乘客。更重要的是,所有乘客都可以下车,但它仍将继续平稳运行。Car类和数组之间的关系Passenger[] passengers不太严格。它被称为聚合。这是关于此主题的一篇好文章:类(对象)之间的关系. 它提供了另一个聚合的好例子。假设我们有一个Student代表一个学生的班级,一个StudentGroup代表一组学生的班级。学生可以是物理俱乐部、星球大战学生粉丝俱乐部或喜剧俱乐部的成员。组合是一种更严格的关系。使用组合时,一个对象有另一个对象,但它不能属于同类型的另一个对象。最简单的例子是汽车发动机。如果汽车有发动机,那么该发动机不能属于另一辆汽车。如您所见,该关系比Car和的关系严格得多Passengers类之间的关系。 继承、组合和聚合 - 4