繼承的優缺點 :
優點 :
新的實現很容易,因為大部分是繼承而來的
很容易修改和擴充套件已有的實現
提高了**的復用性
讓類與類之間產生了關係,是「多型性」的前提
缺點:
打破了封裝,因為基類向子類暴露了實現細節
白盒重用,因為基類的內部細節通常對子類是可見的
當父類的實現改變時可能要相應的對子類做出改變
不能在執行時改變由父類繼承來的實現
由此可見,組合比繼承具有更大的靈活性和更穩定的結構,一般情況下應該優先考慮組合。
只有當下列條件滿足時才考慮使用繼承:
子類是一種特殊的型別,而不只是父類的乙個角色
子類的例項不需要變成另乙個類的物件
子類擴充套件,而不是覆蓋或者使父類的功能失效
多型的優缺點:
優點:
a:提高了**的維護性(繼承保證)
b:提高了**的擴充套件性(由多型保證)
是提高了**的擴充套件性。比如上面的例子中,如果新增了pig,mouse等動物,函式dosomething()仍然可以使用。
弊端:
是不能使用子類中的特有的方法。比如上面例子中,dog和cat的共有方法是eat,這樣animal中僅僅能有eat,而不能有其它。
多型的前提,是父類和子類之間有繼承關係,且子類中方法覆蓋了父類中方法。
向上轉型:
fu f
= new zi();
向下轉型:
zi z = (zi)f;
//要求該f必須是能夠轉換為zi的。
抽象的特點:
1 如果定義了抽象方法,那麼必須定義抽象類;如果定義了抽象類,則不一定有抽象方法。抽象方法和抽象類用abstract關鍵字修飾。
2 抽象類不能例項化,也就是說不能用new關鍵字建立物件。
3 只有當子類覆蓋了「所有」的抽象方法後,子類才能例項化。否則,子類仍然是乙個抽象類。
4 抽象類是基於具體類向上抽取得到的。
介面的特點:
1 介面不能直接例項化,需要有子類,子類才可能例項化。
2 當子類覆蓋了介面中所有抽象函式的時候,子類才可以例項化。
3 父類和子類的關係,可以用「繼承」來形容;介面和子類的關係,可以用「實現」來形容。
繼承 多型 抽象類 介面
繼承 這個世界到處是繼承的例子比如動物是乙個最基礎的物件,人 豬 貓貓 狗狗都從動物繼承了基本的屬性和方法。繼承就是乙個層次結構,先抽象出乙個基本的東西,然後具體的物件從這個基本的東西來繼承,繼承後再寫他特有的,這樣就可以做到復用了。隱藏 如果基類和繼承類裡有一樣的方法,在子類裡呼叫的時候會怎麼樣,...
繼承 抽象 多型
繼承 在php中,使用extends實現繼承,子類 派生類 繼承父類 基類 繼承是為了擺脫重複 繼承 析構方法 子類繼承父類時,子類沒有構造方法,例項化子類物件時,會執行父類的構造方法。子類如果有自己的構造方法,例項化子類物件時,只會自動執行子類自己的構造方法。在子類的構造方法中,使用 parent...
抽象 多型 繼承 封裝 介面 單例
物件導向的特徵有哪些方面 抽象 繼承 封裝 多型 一.介面 1.類只能繼承乙個類,但可以實現多個介面 2.介面可以繼承多個介面 3.介面可以放常量,不能放變數 二.多型 a.多型性是指允許不同類的物件對同一訊息作出響應。1.重寫 2.覆蓋 1.1 完全改寫 原有的邏輯要不得 1.2 後面增加 建立型...