一张图掌握类关系符号
六大关系举例
依赖关系
- 介绍
- 在类中用到其它类,就存在依赖关系;如果没有其它类,该类无法通过编译
- 依赖的情况(依赖其它类)
- 类中用到对方
- 是类的成员属性
- 是类中方法的返回类型
- 是类中方法的参数类型
- 在方法中使用到
- 总结
- 依赖是一种比较大范围的关系,关联关系、泛化关系、实现关系也属于依赖关系
- 我们也可以将关联关系、泛化关系、实现关系等表示为依赖关系,但一般不这么做
关联关系
- 介绍
- 实际是类与类之间的联系
- 是依赖关系的特例
- 种类
- 单向关联(单向箭头黑线)
- A类中声明了B类
private B b;
- 双向关联(无箭头的黑线)
- A类中声明了B类,B类中声明了A类
- A类:
private B b;
- B类:
private A a;
- 自关联(单向箭头指向自己)
- A类中声明了A类
- 单向关联(单向箭头黑线)
泛化(继承)关系
- 介绍
- 泛化关系实际就是继承关系
- 是依赖关系的特例
- 总结
- 只要B类继承了A类,那么AB类存在泛化关系,B继承A
实现关系
- 介绍
- 实现关系实际就是实现接口
- 是依赖关系的特例
- 总结
- 只要B类实现了A接口,那么就存在实现关系,B实现A
聚合关系
- 介绍
- 聚合关系表示整体和部分的关系,整体和部分可以分开
- 是关联关系的特例
- 具有关联的导航性与多重性
- 例子
- 聚合关系一般是:声明类但未创建对象,即在A类中
B b;
- 此时AB类存在聚合关系,注意空心菱形指向A类
- 如果声明时创建了对象,则是组合关系
B b = new B();
- 聚合关系一般是:声明类但未创建对象,即在A类中
- 总结
- 一般情况下聚合关系是 在类中声明其它类但没有直接创建,通过set方法才能设置(或者其它方式);即我们在创建A类时,它里面使用的B类不会随之直接创建,而是需要后续的操作才会有B类
- 聚合关系与组合关系对比起来看更容易理解
组合关系
- 介绍
- 整合和部分的关系,整体与部分不可分开
- 如果整体删除,那么部分也会随之一起删除
- 总结和例子
- 在A类中声明B类并且同时创建B类的对象,此时就存在组合关系
B b = new B();
- 即我们创建A类时,其中的B类也会随之创建,它们的关系很紧密
- 在A类中声明B类并且同时创建B类的对象,此时就存在组合关系