什么是組合優于繼承
作者:佚名 時間:2012-06-06 分享到:
如果你初識面向對象編程和我從前經歷的一樣--你花40分鐘了解信息隱藏,22分鐘用在作用域和可見性上,所有仁政的時間用來討論繼承,一旦你了解了關于對象,域和方法的基本知識以后,繼承就是一個有趣的東西了--面向對象編程中最面向對象的部分,通過使用繼承,你可以得到免費的實現:創建widget的子類以后,你會神奇地獲得widget類中所有的好處。
繼承有時貌似解決所有問題的方案。需要為一輛汽車建模?只需要創建vehicle的子類。
而麻煩在于繼承捎帶了一些不的瑣碎。當你創建一個已存在的類的子類時,你并非真正創建兩個獨立的實體,面是創建了兩個綁定到一個通用實現內核的類,繼承就其本意而言,力圖將子類與超類結合,當修改一個超類中的行為時,其子類的行為也很可能被修改,更進一步即子類對其中超類的內豐構造具有唯一的了解,任何超類中沒有被仔細隱藏掉的內部操作都會清晰地在子類中曝光。如果我們的目標是創建一個非緊密的系統,那么要建造這樣一個系統,在其中的一個單一修改不會像一個打破玻璃那樣一直到整個系統,我們可能就不再需要像平時那樣依賴繼承。
如沒特殊注明,文章均為上海聯楷網絡原創,轉載請注明來自:http://www.ktcbnqb.cn/help/20151126/n949.html