首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

UML 類圖六大關係深度解析:繼承、實現、依賴、關聯、聚合與組合

     編輯:Java 綜合教學

UML 類圖六大關係深度解析:繼承、實現、依賴、關聯、聚合與組合

在物件導向設計中,類與類之間的靜態關係決定了系統的結構穩定性與擴展性。UML 定義了六種核心關係,按耦合強度由強到弱排序為:組合 > 聚合 > 關聯 > 依賴,另有繼承與實現屬於垂直維度的「is-a」關係。本文結合 Java 代碼語義與 UML 圖示,逐一拆解。

一、繼承關係 — extends

語義:子類繼承父類功能並可擴展新功能,體現「is-a」關係。
UML 表示:帶空心三角箭頭的實線,從子類指向父類。
代碼特徵:class Child extends Parent。
設計爭議:極低,語義明確。

繼承關係 UML 圖示

二、實現關係 — implements

語義:類實現介面定義的契約,體現「can-do」關係。
UML 表示:帶空心三角箭頭的虛線,從類指向介面。
代碼特徵:class Impl implements Interface。
設計爭議:極低。

實現關係 UML 圖示

三、依賴關係 — 臨時、弱關聯

語義:類 A 在方法參數、區域變數、靜態方法呼叫中使用類 B,關係具偶發性、暫時性。
UML 表示:帶箭頭虛線,從類 A 指向類 B。
代碼特徵:方法參數為 B、區域變數 new B()、呼叫 B.staticMethod()。
經典案例:人過河借用船,人與船即依賴關係。

依賴關係 UML 圖示

四、關聯關係 — 長期、平等、語義強依賴

語義:兩類在業務邏輯上長期關聯,如「人與朋友」、Order 與 Customer。可單向或雙向。
UML 表示:帶箭頭實線,可標註角色名與多重性(如 1..*)。
代碼特徵:成員變數為關聯類型(private Customer customer;)。

關聯關係 UML 圖示

五、聚合關係 — 整體與部分,可分離

語義:Has-a 關係,整體與部分擁有獨立生命週期,部分可被多個整體共享。
UML 表示:空心菱形 + 實線箭頭,菱形在整體端。
代碼特徵:與關聯一致,僅語義區分。
經典案例:電腦與 CPU、公司與員工、航母編隊與各艦艇。

聚合關係 UML 圖示

六、組合關係 — 強聚合,不可分離

語義:Contains-a 關係,整體銷毀意味著部分同步銷毀,生命週期完全綁定。
UML 表示:實心菱形 + 實線箭頭。
代碼特徵:與關聯一致,語義上部分無法獨立存在。
經典案例:人與大腦、房屋與房間。

組合關係 UML 圖示

七、總結與實戰建議

  • 繼承、實現屬垂直關係,語義明確,爭議極小。
  • 依賴、關聯、聚合、組合屬橫向引用關係,區分關鍵在於語義層面而非代碼語法。
  • 耦合強度排序:組合 > 聚合 > 關聯 > 依賴。
  • 設計時優先使用依賴與關聯,謹慎使用聚合與組合,避免過度設計。
來源:類與類之間的幾種關係 - 博客園
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved