一个简要介绍
在本节课中,我们将了解类之间的不同关系。
类对象之间的交互
到现在为止,我们已经掌握了关于类的定义和行为的所有知识。继承和多态的概念教会了我们如何从基类创建派生类。虽然继承表示类之间的关系,但在某些情况下,对象之间也存在关系。
接下来,我们要使用不同类的对象来设计一个应用程序。这意味着独立类的对象必须能够相互交互。
让我们讨论一下不同类的对象之间可以相互作用的方式分类。
类之间的关系
目前我们需要了解三种常见的类关系。我们在“继承”章节中已经学习了IS A关系。下面我们将学习另外两种:
### 组成部分(Part-of) 在这种关系中,一个类的对象是另一个类对象的**组成部分**。给定两个类,类 A 和类 B,如果类 A 的对象是类 B 实例的一部分,或者反之亦然,则它们处于 **part-of** 关系。
组件类的实例只能在包含类内部创建。在右侧示例中,类 B 和 类 C 有各自的实现,但它们的对象是 类 A 实现的一部分,并且只有在创建类 A 对象后才会被创建。因此,part-of 是一种依赖关系。
### 拥有(Has-a) 这是两个类之间稍弱一些的关系。如果类 A 和类 B 中的一个或两个都需要对方的对象来执行操作,但这两个类的对象可以彼此独立存在,则它们具有 **has-a** 关系。
这意味着一个类拥有对另一个类对象的引用,但并不决定该被引用对象的生命周期。
关联
在面向对象编程中,关联是用于描述 has-a 和 part-of 关系的通用术语,但并不仅限于这两种。当我们说两个类相互关联时,这是一个泛指的说法,意味着我们不关心这两个类对象之间的生命周期依赖关系。在接下来的几节课中,我们将深入探讨关联的特定形式:聚合和组合。
现在我们已经理解了本节相关的关系,让我们开始学习 C# 中用于关联对象的第一种技术:聚合。