类之间的关系
Java 中类直接的关系,可分为:
- 泛化(反向:继承/实现)
- 依赖 Dependency
- 关联 Association
- 聚合 Aggregation
更一般的表述,可以参考《UML 类图》一文。
本文所用到的 UML 图,在这里:
泛化关系
找不同类的共同点,抽象成一个共同的接口或抽象类,这个接口或抽象类与被抽象的类之间的关系就是泛化。泛化和继承/实现的方向是相反的。如图所示:
其中,生肖是狗和虎的泛化,生肖对狗或虎是 has-a 的关系;狗和虎是对生肖的实现,是 is-a 的关系。
A类继承了B类, 此时A类不仅有了B类的方法, 还有其自己的方法.(个性存在于共性中)。
在类扩展时,有一些需要注意的问题,如方法的可见性,抛出异常的范围等,参本站的《Java 继承中需要注意的几个问题》。
依赖关系
一个类依赖另一个类的关系。依赖关系通过方法参数来体现。如下图:
人吃面包 Person eats bread
人吃(依赖于)面包,俗称 use-a 关系
关联关系
两个类的对象之间的对应关系:1:1, 1:n, m:n。如班级和学生之间的关联关系。它可以通过成员变量体现。
更详细的解释可以本站的《类图(Class Diagram)》
聚合关系
一个类持有另一个类的引用,它和关联关系在语法上是一样的,只能从语意上区分,它比关联关系要强很多,它也是 has-a 关系,但是整体和局部的关系。
更详细的解释可以本站的《类图(Class Diagram)》