---
title: "一张图搞定java类之间的6种关系，以后再也不怕画UML图了"
description: "java的类之间的关系：泛化、依赖、关联、实现、聚合、组合"
date: 2020-03-13T00:00:00Z
canonical: https://xiaobox.github.io/p/2020-03-13-yi-zhang-tu-gao-ding-java-lei-zhi-jian-de-6-zhong-guan-xi-yi/
author: 小盒子
categories: ["后端"]
tags: ["Java"]
source: https://mp.weixin.qq.com/s/hgu_GdM6KUEsKwruof9tVg
license: CC BY-NC-SA 4.0
license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/
---

# 一张图搞定java类之间的6种关系，以后再也不怕画UML图了

java的类之间的关系：泛化、依赖、关联、实现、聚合、组合

![Image](https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2020-03-13-yi-zhang-tu-gao-ding-java-lei-zhi-jian-de-6-zhong-guan-xi-yi/001-ebe3089e.jpg)

-   车的类图结构为<<abstract>>，表示车是一个抽象类；它有两个继承类小汽车和自行车；它们之间的关系为实现关系，使用带空心箭头的虚线表示；

-    小汽车为与SUV之间也是继承关系，它们之间的关系为泛化关系，使用带空心箭头的实线表示；

-   小汽车与发动机之间是组合关系，使用带实心箭头的实线表示；

-   学生与班级之间是聚合关系，使用带空心箭头的实线表示；

-   学生与身份证之间为关联关系，使用一根实线表示；

-   学生上学需要用到自行车，与自行车是一种依赖关系，使用带箭头的虚线表示；

### 泛化

泛化关系(Generalization)也就是继承关系，也称为“is-a-kind-of”关系，泛化关系用于描述父类与子类之间的关系，父类又称作基类或超类，子类又称作派生类。在UML中，泛 化关系用**带空心三角形的直线**来表示。

### 依赖

依赖关系(Dependency) 是一种使用关系，特定事物的改变有可能会影响到使用该事物的其他事物，在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下，依 赖关系体现在某个类的方法使用另一个类的对象作为参数。

依赖关系有如下三种情况：

-   A类是B类中的（某方法的）局部变量； 

-   A类是B类方法当中的一个参数；

-   A类向B类发送消息，从而影响B类发生变化；

在UML中，依赖关系用**带箭头的虚线**表示，由依赖的一方指向被依赖的一方。

### 组合

组合关系(Composition)也表示类之间整体和部分的关系，但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在，部分对象也将不存在，部分对象与整体对象之 间具有同生共死的关系。 在组合关系中，成员类是整体类的一部分，而且整体类可以控制成员类的生命周期，即成员类的存在依赖于整体类。在UML中，组合关系用**带实心菱形的直线**表示。

### 实现

实现关系(Realization)，在这种关系中，类实现了接口，类中的操作实现了接口中所 声明的操作。在UML中，类与接口之间的实现关系用**带空心三角形的虚线**来表示。

### 关联

关联是一种结构关系，说明一个事物的对象与另一个事物的对象相联系。给定有关联的两个类，可以从一个类的对象得到另一个类的对象。关联有两元关系和多元关系。两元关系是指一种一对一的关系，多元关系是一对多或多对一的关系。两个类之间的简单关联表示了两个同等地位类之间的结构关系。当你想要表示结构化关系时使用关联。

-    在UML类图中，用**实线连接**有关联的对象所对应的类

-   在使用类图表示关联关系时可以在关联线上标注角色名。

### 聚合

聚合关系(Aggregation) 表示一个整体与部分的关系。通常在定义一个整体类后，再去分析这个整体类的组成结构，从而找出一些成员类，该整体类和成员类之间就形成了聚合 关系。在UML中，聚合关系用**带空心菱形的直线**表示。

**关于关联，聚合，组合在实现上并没有显著区别，相区别他们只有通过判断关系双方之间的实际关系，如关系强弱、创建与销毁之间有无必要关联等。**

参考：

-   https://blog.csdn.net/lpjishu/article/details/51491779

-   https://design-patterns.readthedocs.io/zh\_CN/latest/read\_uml.html

![Image](https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2020-03-13-yi-zhang-tu-gao-ding-java-lei-zhi-jian-de-6-zhong-guan-xi-yi/002-f2e7317d.jpg)

关注公众号 获取更多精彩内容

