關聯(Association)
Association 指的是類之間的協作關係,其中一個類與另一個類進行交互,但它們之間並沒有父子關係。Association 通常表示一個類需要另一個類的某些服務或數據,或者表示類之間有某種共同的特徵或屬性。
繼承(Inheritance)
Inheritance 指的是從父類到子類的屬性和方法的傳遞過程,子類可以繼承父類的屬性和方法,並可以在此基礎上添加自己的屬性和方法。Inheritance 主要是為了實現代碼的重用,避免重複編寫代碼。在 Inheritance 中,子類和父類之間存在一種父子關係,子類從父類繼承了所有的特性,包括屬性和方法。子類可以添加新的特性或方法,也可以覆蓋或重載繼承的方法。
例子
以下通過圖書館管理系統為例來説明 Association 和 Inheritance 的區別:
Association 關係
圖書館類 Library 和讀者類 Reader 之間存在一種協作關係,每個讀者可以在圖書館中借閲、歸還圖書。此時 Library 類和 Reader 類之間就存在 Association 關係。
┌───────────────┐ ┌───────────────┐
│ Library │ │ Reader │
├───────────────┤ ├───────────────┤
│ │◀─────────┤ │
│ borrow_book │ │ borrow_book │
│ return_book │ │ return_book │
│ search_book │ │ │
│ │ └───────────────┘
└───────────────┘
Inheritance 關係
在圖書館管理系統中,所有書籍都有一些共同的特徵,如書名、作者、出版社等等。因此可以定義一個 Book 類作為所有具體書籍類的父類,每個具體書籍類可以繼承 Book 類的屬性和方法。此時,具體的書籍類與 Book 類之間存在 Inheritance 關係。
┌───────────────┐
│ Book │
├───────────────┤
│ title │
│ author │
│ publisher │
│ price │
│ │
└───────────────┘
▲
│
┌───────────────┐
│ Novel │
├───────────────┤
│ genre │
│ language │
│ is_best_seller│
│ ISBN │
└───────────────┘
▲
│
┌───────────────┐
│ Textbook │
├───────────────┤
│ subject │
│ level │
│ edition │
│ ISBN │
└───────────────┘