在使用 draw.io 画 Java 的 UML 类图时,class
(类)和 interface
(接口)有以下区别:
1. 表现形式上的区别
-
类(Class)
- 通常用一个带有三栏的矩形表示:
- 第一栏:类名
- 第二栏:属性(成员变量)
- 第三栏:方法(成员函数)
- 类名不带特殊符号,直接写类名,如
Person
。
- 通常用一个带有三栏的矩形表示:
-
接口(Interface)
-
也用矩形表示,但通常会在类名上方标注
<<interface>>
或在类名下方加斜体,以表明这是一个接口。 -
只包含方法声明,不包含实现和成员变量(除了常量)。
-
例如:
+---------------------+ | <<interface>> | | Printable | +---------------------+ | + print() | +---------------------+
-
2. 语义上的区别
-
类(Class)
- 可以有成员变量和方法的实现。
- 可以被实例化(new 一个对象)。
- 可以继承自其它类(单继承)。
-
接口(Interface)
- 只定义方法的签名(没有实现),有时可以有常量。
- 不能被实例化。
- 一个类可以实现多个接口(多实现)。
3. UML 关系线上的区别
-
类的继承(Generalization)
- 用带空心三角箭头的实线连接,箭头指向父类。
-
接口的实现(Realization)
- 用带空心三角箭头的虚线连接,箭头指向接口。
4. 画法总结
- 类图中的类
- 直接画三栏矩形,类名正常显示。
- 类图中的接口
- 类名上方加
<<interface>>
,或类名斜体。 - 方法只写方法签名,无实现。
- 用虚线箭头表示实现关系。
- 类名上方加
举例:
plaintext
+---------------------+ +---------------------+
| Person | | <<interface>> |
+---------------------+ | Printable |
| - name: String | +---------------------+
+---------------------+ | + print(): void |
| + getName(): String | +---------------------+
+---------------------+
Person --实现(虚线带空心三角箭头)--> Printable
总结 :
在 draw.io 画 UML 类图时,class
和 interface
的主要区别体现在标注、内容、以及实现/继承关系的连接线上。接口需要用 <<interface>>
标注,并用虚线箭头表示实现关系;类则用普通矩形,实线箭头表示继承关系。