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

UML 類關係全解析:繼承、實現、依賴、關聯、聚合、組合的聯繫與區別

     編輯:Java 綜合教學

UML 類關係全解析:繼承、實現、依賴、關聯、聚合、組合的聯繫與區別

UML 類圖中六大關係按強弱程度排序:

組合 > 聚合 > 關聯 > 依賴
繼承/實現屬於縱向關係,上述四者為橫向引用關係

1. 繼承 - Generalization

定義:子類繼承父類功能並可擴展新功能。Java 關鍵字 extends。
關係:is-a(類與類、接口與接口)
繼承關係圖

2. 實現 - Realization

定義:類實現接口契約。Java 關鍵字 implements。
關係:is-a(類與接口)
實現關係圖

3. 依賴 - Dependency

定義:類 A 臨時使用類 B,關係偶然、臨時、極弱。B 變化影響 A。
代碼表現:B 作為方法參數、局部變量、靜態方法調用。
例子:過河借船,人與船是依賴關係。
依賴關係圖

4. 關聯 - Association

定義:語義級強依賴,長期、平等、可單向/雙向。
代碼表現:B 作為 A 的成員屬性(字段),或 A 引用全局 B 類型變量。
例子:我和我的朋友。
關聯關係圖

5. 聚合 - Aggregation

定義:關聯的特例,整體-部分、has-a,**可分離**,各自獨立生命週期,部分可共享。
代碼表現:與關聯一致,僅語義區分**。
例子:電腦與 CPU、公司與員工。
聚合關係圖

6. 組合 - Composition

定義:強聚合,contains-a,**不可分離**,整體生命週期結束意味著部分結束。
代碼表現:與關聯一致,**僅語義區分**。
例子:你和你的大腦。
組合關係圖

關鍵區別總結表

關係強度生命週期共享性代碼判斷
依賴最弱臨時無方法參數/局部變量
關聯中等長期可共享成員字段
聚合較強獨立可共享成員字段 + 語義 has-a
組合最強綁定不可共享成員字段 + 語義 contains-a

實戰建議

  • 代碼層面無法完全區分關聯/聚合/組合,**必須結合業務語義**
  • 設計時優先明確「整體是否管理部分生命週期」與「部分是否可被多整體共享」
  • 繼承/實現屬於縱向擴展,慎用繼承,優先組合/聚合復用代碼
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved