面向对象编程对象和对象之前的关系

在面向对象编程(OOP)中,对象之间存在多种关系,用来表达它们如何协作、依赖或组成更复杂的结构。以下是常见的几种关系的含义和区别:


一、依赖关系(Dependency)

A使用B,但 B 不是 A 的属性。

通常是方法参数局部变量临时使用某个对象的功能

表示 “A 依赖于 B 的功能”,耦合程度最弱

UML 表示法:虚线箭头:A ---> B


二、关联关系(Association)

A拥有B,B 是 A 的属性。

表示“有一个”的关系,可双向或单向。

UML 表示法:实线箭头或线:A ──> B(单向) 或A <──> B(双向)


三、聚合关系(Aggregation)

A 和 B 是整体与部分的关系,B 属于 A,但 B 的生命周期独立于 A

表示“弱拥有”,A 被销毁时 B 可能依然存在

空心菱形:Department ◇─── Employee


四、组合关系(Composition)

是聚合的特殊形式,强拥有

A 和 B 是整体与部分的关系,B 的生命周期完全依赖 A,A 销毁,B 必然销毁。

实心菱形:House ◆─── Room


五、继承关系(Generalization / Inheritance)

子类继承父类。在 Go 中表现为接口实现或结构体嵌套。

UML:空心三角箭头:Dog ─▷ Animal


六、 实现关系(Realization)

类实现接口,或者某种接口适配。

Go 语言中是结构体实现接口。

UML 表示:虚线三角箭头:A - -▷ Interface


总结

关系          |                关键点                  |      表示

------------|------------------------------|-----------------

依赖          | 临时使用、非字段             | 虚线箭头

关联         | 拥有字段,生命周期独立  | 实线箭头

聚合         | 整体-部分,生命周期独立 | 空心菱形

组合         | 整体-部分,生命周期绑定 | 实心菱形

继承         | “是一个”的关系                    | 空心三角箭头

实现         | 接口实现                                | 虚线三角箭头


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容