面向对象-类与类的关系 作者:马育民 • 2024-12-15 21:36 • 阅读:10007 # 类关系 在面向对象开发中,类之间有各种各样的相互关系,如下: 1. 继承 2. 依赖关系 3. 关联关系 1. 聚合关系 2. 组合关系 4. 实现关系 >类关系以java为基础,python做了一些借鉴 **UML** 为了说明类与类的关系,采用UML建模,关于UML参见: http://www.malaoshi.top/show_1EF2GcHIk5xB.html # 继承关系 **UML类图** [![](http://www.malaoshi.top/upload/0/0/1EF2GGMM6a9L.png)](http://www.malaoshi.top/upload/0/0/1EF2GGMM6a9L.png) >实线三角指向父类 # 依赖关系 A类会用到B类,这种关系具有偶然性,临时性。但B类的变化会影响A类。 **代码体现**:A类方法中的参数包含了B类。 # 关联关系 A类会用到B类,这是一种强依赖关系,是长期的并非偶然。 代码:A类的成员变量中含有B类。 **UML类图** [![](http://www.malaoshi.top/upload/0/0/1EF2GGbXkIcb.png)](http://www.malaoshi.top/upload/0/0/1EF2GGbXkIcb.png) >A类用到B类,实线箭头从A类指向B类 ### 聚合关系 聚合是关联关系的一种特例,是整体和部分的关系 1. 代表了has-a的关系 2. 整体和部分之间是可分离的,部分可以属于多个整体 3. 整体和部分拥有各自的生命周期。整体存在与否不会相互影响部分,反之亦然 **代码体现:**作为整体的A类,有序列类型的属性,用于保存部分。如:学校类和学生类、公司类和员工类等,就属于聚合关系。 ### 组合关系 组合关系也是关联关系的一种特例,同样体现整体与部分的关系,这种关系比聚合更强 1. 代表contains-a的关系 2. 在组合的关系中,彼此依赖的,不可分割 3. 具有相同的生命周期,整体被销毁,部分也会被销毁 **代码体现:**从代码上看,与聚合相同,只能 **从语义区分** 比如:手机和零件的关系,手机是整体,部分是cpu、屏幕、ram、rom,部分之间是不同的。 原文出处:http://malaoshi.top/show_1GWE6ackbj1.html