繼承 多型 介面 抽象的特點

2021-08-24 20:40:42 字數 1298 閱讀 9273

繼承的優缺點 :

優點 :

新的實現很容易,因為大部分是繼承而來的 

很容易修改和擴充套件已有的實現 

提高了**的復用性

讓類與類之間產生了關係,是「多型性」的前提

缺點:

打破了封裝,因為基類向子類暴露了實現細節 

白盒重用,因為基類的內部細節通常對子類是可見的 

當父類的實現改變時可能要相應的對子類做出改變 

不能在執行時改變由父類繼承來的實現 

由此可見,組合比繼承具有更大的靈活性和更穩定的結構,一般情況下應該優先考慮組合。

只有當下列條件滿足時才考慮使用繼承: 

子類是一種特殊的型別,而不只是父類的乙個角色 

子類的例項不需要變成另乙個類的物件 

子類擴充套件,而不是覆蓋或者使父類的功能失效

多型的優缺點:

優點

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 後面增加 建立型...