C 學習筆記 多型(二)抽象類

2022-09-06 14:51:16 字數 1329 閱讀 8684

多型是類的三大特性之一,抽象類又是多型的實現方法之一。抽象類是什麼呢,如果把虛方法比作乙個盛有純淨水的杯子,那麼此時的「純淨水」就是事先定義好的方法,我們可以根據不同的需求來改變杯子中所事先盛放的是「純淨水」還是「咖啡」。但是抽象類呢,他更像是乙個空的杯子,放在消毒櫃中,讓有需要的人自己去拿,去決定這個杯子裡裝什麼。這個「杯子」是抽象方法,存放杯子的「消毒櫃」是抽象類。

我們用abstract來宣告或定義乙個抽象類或抽象方法,

//

定義乙個抽象類

[訪問許可權] abstract

class

[類名]

//定義乙個抽象方法

[訪問許可權] abstract [返回型別] [方法名]([參數列]);

這裡需要注意的是:

抽象類中可以有抽象方法,也可以沒有抽象方法。(「消毒櫃」可以存放杯子,也可以存放碗筷)

抽象方法必須存在於抽象類中,並且這個方法不可擁有方法體。(首先杯子需要放在乙個乾淨可以消毒的地方,其次這個杯子是沒有被用過的,不然恐怕沒有客人想用這個杯子做什麼。。)

抽象類無法例項化,只能被繼承於他的派生類例項化,也就是說抽象類的存在就是為了被繼承。

抽象類中的抽象成員只能在其派生類中使用override

關鍵字進行實現。

抽象類和抽象方法的使用:

//

定義乙個櫃子,櫃子裡有杯子(此時無法進行例項化)

abstract

class

cabinet

//第一類顧客喜歡喝牛奶

class

customer1:cabinet}//

第二類顧客喜歡喝汽水

class

customer2:cabinet

}

將派生類例項化並且進行結果驗證:

cabinet a = new cabinet();  //

會引起不能例項化抽象類的錯誤

customer1 a = new

customer1();

a.cup();

輸出結果:

牛奶customer2 b = new

customer2();

b.cup();

輸出結果:

汽水

這是我理解的抽象類,新手上路,有不對的地方還請各位老司機指出,對自己的收穫進行一定的總結,如果能幫到和我一樣的新手就再好不過了。晚安世界!

C 學習 多型 抽象類

多型 概念 run time binding 函式名和函式入口點的繫結發生在程式執行時刻 complie time binding 程式再編譯時進行函式名和函式入口的繫結 多型的本質 run time binding 多型的條件 1.必須有繼承 2.子類要把虛函式重寫 override 派生類的vi...

學習筆記 多型 抽象類 要點總結

多型 乙個操作隨著所傳遞或 的物件型別的不同能夠做出不同的反應,其行為模式稱為多型。多型的3個條件 1.虛函式 父類中設為虛函式的成員函式才可能具有多型性。2.覆蓋 子類過載父類成員函式不能傳播 虛 性,僅有子類函式覆蓋父類函式情況下,才有多型。3.指標或引用 僅僅對於物件的指標和引用的間接訪問,才...

多型 抽象類

多型 當中體現多型性,就是父類指向子類 左父右子 格式 父類名稱 物件名 new 子類名稱 介面名稱 物件名 new 實現類名稱 使用多型,物件向上轉型,是絕對安全的,但物件一旦向上轉型父類,就不能呼叫子類原本特有的類容 物件向下轉型,就是還原的動作 格式 子類名稱 物件名 子類名稱 父類物件 含義...