has a
關聯關系:聚合
凡是能夠使用 has a 來描述的,統一以屬性的方式存在
例如 Customer has a FoodMenu(顧客有一個食物菜單)
is a
繼承關系:繼承
凡是滿足is a的表達式都可以設置為繼承
例如 Cat is a Animal(貓是一種動物)
is like a
實現關系:接口
滿足 is like a 的表達式也是一種繼承
實現關系通常是:類實現接口
但是在繼承中,僅覆蓋了父類方法即為Is-a;若在覆蓋父類方法基礎上有新增方法,則為Is-like-a。
例子:
1.假設你確定兩件對象之間是is-a的關系,那么此時你應該使用繼承。比方菱形、圓形和方形都是形狀的一種。那么他們都應該從形狀類繼承。
2.假設你確定兩件對象之間是has-a的關系,那么此時你應該使用聚合。比方電腦是由顯示器、CPU、硬盤等組成的。那么你應該把顯示器、CPU、硬盤這些類聚合成電腦類。
3.假設你確定兩件對象之間是like-a的關系,那么此時你應該使用組合。比方空調繼承於制冷機,但它同一時候有加熱功能。那么你應該把讓空調繼承制冷機類,並實現加熱接口