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