為什麼多用組合,少用繼承?

2021-08-26 16:41:24 字數 329 閱讀 5702

繼承組合都是實現類重用的手段,何時用繼承何時用組合?

繼承表示「is a」的關係,繼承是對已有的類做一番改造,以此獲得乙個特殊的版本。即將乙個較為抽象的類改造成能適用於某些特定需求的類。組合表示「has a」的關係,如果兩個類之間有明顯的整體/部分的關係,適合用組合,比如people和arm類。將arm類作為people類的乙個私有屬性。

面對擴充套件問題時,如果選擇使用繼承,則要考慮除了需要重寫關注的方法外,是否還要看看有些方法也被繼承下來了,而這些方法如果不重寫的話是有害的。如果使用組合則可以避免這種問題。

程式設計 多用組合少用繼承原則

一 方法服用的兩種最常用的技術就是類繼承和物件組合。1.繼承復用 子類中可以將父類的方法當作自己的方法使用 非private修飾的 優點 可以通過重寫父類方法,來修改或擴充套件父類方法 缺點 繼承來的方法在編譯期就已經確定,無法在執行期間改變從父類繼承來的方法的行為 子類和父類是強耦合關係,也就是說...

多用組合少用繼承的設計思想

為什麼多用組合少用繼承?繼承最大的問題就在於 容易繼承層次過深 繼承關係過於複雜影響到 的可讀性和可維護性。為什麼繼承容易過深過複雜?繼承是實現多型的手段,當態太多時,就容易導致過於複雜和過深。我們以穿戴衣物為例,如圖 從對人體保護部位的不同可以分為 從品牌不同可分為 為了圖更簡單,我略掉了襪子 帽...

軟體設計原則 多用組合少用繼承

黑盒實現重用的兩個途徑 白盒和黑盒重用。白盒基於類的繼承,但要承受繼承的缺點。黑盒基於物件組合。public class registereduser user 派生類繼承了父類的上下文,獲得父物件狀態的某種可見性。隨著不同版本派生類的出現,並不能保證父類和派生類真的可以交替使用。保證父類及其派生類...