drawio画java的uml的类图时,class和interface的区别是什么

在使用 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>> 标注,并用虚线箭头表示实现关系;类则用普通矩形,实线箭头表示继承关系。

相关推荐
AI备案指南-满满1 分钟前
算法备案审核不通过,一般是什么原因?
java·人工智能·算法·大模型备案·算法备案·大模型登记
秋天的怀念_David14 分钟前
算法一千零一夜 · 第二十三夜 电力民生写成的曲线
java·程序人生·算法
吴名氏.35 分钟前
Java转AI Agent教程(第五周)Prompt工程
java·人工智能·prompt·ai agent
8Qi837 分钟前
DDD架构演进
java·分布式·mvc·ddd
paopaokaka_luck1 小时前
灾害应急物资管理系统(AI应急助手、Echarts可视化数据看板、捐赠入库联动、 物资全流程管理、库存变动追溯、灾情资讯与互动反馈、物资发放公示)
java·前端·javascript·spring boot·mysql·tomcat·echarts
SL_staff1 小时前
HR系统对接钉钉考勤总失败?根源在于缺乏业务语义级逻辑中枢
java·开源·全栈
程序边界1 小时前
一台数据集成软件的拆解笔记(下):一致性、容错、跑批与迁移,KFS 真正难的地方在这
java·前端·笔记
揣一尾游鱼yu1 小时前
内部类和Object笔记
java·开发语言·object·内部类
你怎么知道我是队长2 小时前
C++零基础第3周:if/else、switch、for/while/do-while 控制流完全指南(附20段可运行代码+避坑清单)
java·开发语言·c++
damoluomu2 小时前
Node 的 Headless 出厂没有前台,Java 的 Headless 是从门户里长出来的
java·开发语言·node.js