021-多態 虛方法 抽象類 接口

021-多態 虛方法

一、多態

1、意在讓一個對象能夠表現出多種的類型、狀態;
(能讓父類表現出每個子類類型出來,就完美了,就不用寫類型轉換了)

2、實現多態的方法:
虛方法、抽象類、接口

注:實現多態,都是聲明父類,去指向子類
Person p = new Teacher();

二、虛方法實現

1、在父類的函數前面加上virtual關鍵字,標記爲虛方法。
2、在子類的每個函數前面加上override關鍵字,表示重寫父類的虛方法。
3、多態的優點:
我們將不同的子類對象都當作父類來看,這樣可以避免子類之間的差異。
寫出通用的代碼,做出通用的編程,以適應需求的不斷改變。
一定要用多態聲明父類,去執行子類對象。

三、抽象類

當父類不知道子類如何實現的時候,可以將父類提供的函數標記爲抽象函數。

抽象成員必須在抽象類中。

如果父類中的函數知道怎麼寫【有具體的實現】,則用虛方法實現多態,反之則用抽象類來實現多態。

抽象類的特點:
a.子類如果繼承了一個抽象的父類,那麼這個子類必須將抽象父類中的所有成員重寫。(除非這個子類也是抽象類)
b.抽象類中除了有抽象成員外,還可以有普通的成員,繼承那一套抽象類同樣可以使用(如單根性、繼承性等)。
c.子類重寫的父類抽象的函數,必須跟父類的抽象函數具有相同的方法簽名(相同的參數和相同的返回值)。

注:父類就是爲了封裝子類共有的成員

四、接口

1、概念:
a> 接口就是一種規範,協議(*),約定好遵守某種規範就可以寫通用的代碼。
b>定義了一組具有各種功能的代碼。(只是一種能力,沒有具體的實現,像抽象方法一樣,“光說不做”)

2、作用:
a> 接口解決了類的多繼承問題。
b> 接口解決了繼承以後體積龐大的問題。

五、虛方法和抽象類的區別

1、虛方法必須有實現,抽象方法必須沒有具體實現。
2、抽象方法必須在抽象類中聲明,虛方法可以出現在抽象類中。
3、抽象方法必須在子類中重寫,虛方法可以被重寫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章