繼承與組合的優缺點


  類繼承和對象組合是復用的兩種最常用的技術。

一:繼承

  繼承是Is a 的關系,比如說Student繼承Person,則說明Student is a Person。繼承的優點是子類可以重寫父類的方法來方便地實現對父類的擴展。

  繼承的缺點有以下幾點:

  ①:父類的內部細節對子類是可見的。

  ②:子類從父類繼承的方法在編譯時就確定下來了,所以無法在運行期間改變從父類繼承的方法的行為。

  ③:如果對父類的方法做了修改的話(比如增加了一個參數),則子類的方法必須做出相應的修改。所以說子類與父類是一種高耦合,違背了面向對象思想。

二:組合

  組合也就是設計類的時候把要組合的類的對象加入到該類中作為自己的成員變量。

  組合的優點:

  ①:當前對象只能通過所包含的那個對象去調用其方法,所以所包含的對象的內部細節對當前對象時不可見的。

  ②:當前對象與包含的對象是一個低耦合關系,如果修改包含對象的類中代碼不需要修改當前對象類的代碼。

  ③:當前對象可以在運行時動態的綁定所包含的對象。可以通過set方法給所包含對象賦值。

  組合的缺點:①:容易產生過多的對象。②:為了能組合多個對象,必須仔細對接口進行定義。

由此可見,組合比繼承更具靈活性和穩定性,所以在設計的時候優先使用組合。只有當下列條件滿足時才考慮使用繼承:

  • 子類是一種特殊的類型,而不只是父類的一個角色
  • 子類的實例不需要變成另一個類的對象
  • 子類擴展,而不是覆蓋或者使父類的功能失效


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM