隨筆 - 1, 文章 - 0, 評論 - 0, 引用 - 0

          導(dǎo)航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          •  

          最新評論

          2016年12月27日

          組合與繼承到底有什么區(qū)別?

          2016年12月27日14:45:26
          =====================
          1、在新的class中使用既有的class,這中方法稱之為"組合"。但是這種重用方式只是很單純的重復(fù)運(yùn)用以有的代碼功能,而非重復(fù)運(yùn)用其形式。
          2、讓新的class成為既有class的一類,并且根據(jù)需要加入新的功能,而無須更動原有class,這種方法稱之為"繼承"。

          如果B是A的一種 才用繼承

          PS:
          繼承是說“我父親在家里給我?guī)土撕艽蟮拿?#8221;。 
          組合是說“我請了個老頭在我家里干活”。 
          太有才了

          組合是在一類類中引用另一個類。生成另一個類的實例。 
          而繼承只是繼承了父類的變量和方法。 
          區(qū)別: 
          使用組合可以用到另一個類中私有的變量和方法,而繼承就不可以用到父類的私有的變量和方法了 
          他們都有各自的好處,要靈活的運(yùn)用。

          類繼承與對象組合是實現(xiàn)類復(fù)用的兩種最常用的技術(shù)。

          一:繼承

            繼承是Is a 的關(guān)系,比如說Student繼承Person,則說明Student is a Person。繼承的優(yōu)點是子類可以重寫父類的方法來方便地實現(xiàn)對父類的擴(kuò)展。

            繼承的缺點有以下幾點:

            1:父類的內(nèi)部細(xì)節(jié)對子類是可見的。

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

            3:子類與父類是一種高耦合,違背了面向?qū)ο笏枷搿?/font>

                4 :繼承關(guān)系最大的弱點是打破了封裝,子類能夠訪問父類的實現(xiàn)細(xì)節(jié),子類與父類之間緊密耦合,子類缺乏獨(dú)立性,從而影響了子類的可維護(hù)性。

                5:不支持動態(tài)繼承。在運(yùn)行時,子類無法選擇不同的父類。

          二:組合

                1:不破壞封裝,整體類與局部類之間松耦合,彼此相對獨(dú)立。

                2:具有較好的可擴(kuò)展性。

                3:支持動態(tài)組合。在運(yùn)行時,整體對象可以選擇不同類型的局部對象。


          組合是has a的關(guān)系 
          繼承是is a的關(guān)系


          引用一句老話應(yīng)該更能分清繼承和組合的區(qū)別:組合可以被說成“我請了個老頭在我家里干活” ,繼承則是“我父親在家里幫我干活"。


          總結(jié)

          1.除非考慮使用多態(tài),否則優(yōu)先使用組合。
          2.要實現(xiàn)類似”多重繼承“的設(shè)計的時候,使用組合。
          3.要考慮多態(tài)又要考慮實現(xiàn)“多重繼承”的時候,使用組合+接口。

          posted @ 2016-12-27 15:27 zyuan1991 閱讀(252) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 和林格尔县| 株洲市| 石家庄市| 翁源县| 西林县| 广丰县| 杂多县| 金寨县| 北辰区| 昔阳县| 新建县| 新郑市| 武宣县| 绥宁县| 纳雍县| 广安市| 宁明县| 炎陵县| 安徽省| 康平县| 岚皋县| 新绛县| 金平| 资源县| 衡东县| 扎赉特旗| 昌都县| 休宁县| 深泽县| 县级市| 黄石市| 昌江| 公主岭市| 阿拉尔市| 简阳市| 鸡泽县| 吉安县| 保靖县| 长白| 正镶白旗| 华安县|