JAVA中类之间的关系

79 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

java中类之间的关系

在生产中,很多场景下类与类之间都存在一定的联系,类之间的关系包括:依赖、关联、聚合、组合、继承等

依赖关系: 我们也叫做uses-a关系(使用),假设有两个类,类A和类B,类A的某个成员方法的参数有类B,说明类A使用了类B,类A依赖于类B。(除了被依赖方作为依赖方的方法参数,还可能作为依赖方的方法返回值存在,这些都是依赖关系的表现形式。)

比如:

//这里LocalDateTime的now方法根据时区ID创建LocalDateTime,这里说明LocalDateTime依赖ZoneId
public static LocalDateTime now(ZoneId zone){
    return now(Clock.system(zone));
}

在UML中,依赖关系使用虚线箭头表示,依赖方指向被依赖方(被使用方,如前例中的ZoneId)

关联关系(强依赖关系): 类B是类A的成员变量

public class A{
    public B b;
}

在UML中,双向关联关系用一条实线表示,单向关联为单向实线箭头表示

聚合关系: has-a关系(拥有),假设有两个类,类A和类B,类A包含类B,类B是类A的成员变量,聚合关系和关联关系都体现在成员变量,它们的区别在于,关联关系双方是平级的,是个体和个体的关系,而聚合关系中双方不是平级的,是整体和部分的关系。

在UML图中我们用空心菱形加实线的形式表示聚合关系。

组合关系: 组合关系是一种强聚合关系,聚合关系中部分离开整体还可单独存活,但在组合关系中部分离开整体便毫无意义,如人身体中的四肢。

在UML图中我们用实心菱形加实线的形式表示聚合关系。