–类与类之间的关系
主要有以下三种关系
1.继承:
-
是指一个类继承另外一个类,并增加他自己新的功能,通过关键字extends明确标识
-
子类拥有父类的成员和方法
-
判断两个类是不是继承关系:
子类
*is*
父类 —>是否合理
实现:一个类可以实现多个接口
·代码模板:·
class 类名 implements 接口{
}
2.依赖:
简单理解,依赖就是一个类A使用到了另一个类B,而这种关系是具有偶然性的
、临时性的
、非常弱的
,但是类B的变化会影响到类A。比如某人要过河,需要借用一条船,人此时与船的关系就是依赖。
在代码层面,类B作为参数被类A在某个method方法中使用
判断方法:
A类 use
B类----->看是否合理
3.关联:
-
是一种强依赖,不存在偶然性、临时性,一般是一种长期的,且类的关系一般是平等的。
-
关联可以是
单向的
,也可是双向的
class Customer { Order[] orders; } class Order{ Product[] products; } class Product{ }
在代码层面:
被关联类B的属性形式出现在关联A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。
判断两个类是不是关联关系:
A类 has
B类
3.1聚合关系:
聚合是关联关系的特例,它体现了整体与局部的关系,即has a
的关系。
整体跟局部之间没没有共同的生命周期;
3.2组合关系:
组合也是关联关系的特例,它体现的是contains a
的关系,整体局部之间有共同的生命周期
类之间关系的总结:
后几种关系所表现的强弱程度以此为:组合>聚合>组合>依赖
设计思路:高内聚、低耦合
a) 继承和实现一般没有争议
b) 后四种关系的强弱:组合>聚合>关联>依赖。
c) 关联和依赖的区别:
i. 关联关系强、长期
ii. 关联关系是通过属性来实现;依赖关联是通过方法形参或者局部变量实现
d) 关联、组合/聚合的异同
i. 相同:都是关联,都是做类的属性
ii. 不同点:组合 /聚合表示的是整体和部分的关系,关联可以表示所有关系
e) 组合和聚合的异同
i. 相同:都是关联的特例,都是表示的整体和部分的关系
ii. 不同点:整体部分的生命周期是否相同?组合更强