C 中的多型

2021-08-28 11:27:54 字數 538 閱讀 6510

一.黎克特制替換原則:向上轉型,父類引用指向子類物件。

二.a as b:將父類a轉換為子類b,呼叫子類對應的方法。

三.使用虛方法完成多型的步驟:

1.父類中定義虛方法;2.子類對虛方法進行重寫。3.測試類中,可以定義父類,引用子類物件傳入,或者是將父類作為形式引數(泛型物件),傳入有重寫方法的子類物件。4.多型的存在 ,自動去呼叫對應子類中的方法。

四.抽象方法和虛方法的區別:

抽象方法 abstract

虛方法  virtual

抽象方法不能有方法體,只能有方法的申明(不能出現花括號)

語法上與普通方法無區別,在方法前加了virtual

抽象方法必須定義抽象類中,有抽象方法的一定是抽象類,抽象類可以沒有抽象方法

虛方法出現在普通的類中,無特別要求

抽象方法在子類必須被重寫

虛方法可以在子類中重寫,也可以不重寫

抽象方法不能使用private,static 修飾

虛方法也不能用private修飾

抽象類的實質是用來被繼承,抽象類不能被例項化

C 中的多型

封裝 繼承 多型,物件導向的三大特性,前兩項理解相對容易,但要理解多型,特別是深入的了解,對於初學者而言可能就會有一定困難了。我一直認為學習oo的最好方法就是結合實踐,封裝 繼承在實際工作中的應用隨處可見,但多型呢?也許未必,可能不經意間用到也不會把它跟 多型 這個詞對應起來。在此拋磚引玉,大家討論...

C 中的多型

c 中的多型分為靜多型和動多型 也就是靜態繫結和動態繫結兩種現象 靜動的區別主要在於這種繫結發生在編譯期還是執行期,發生在編譯期的是靜態繫結,也就是靜多型 發生在執行期的則是動態繫結,也就是動多型。一 靜多型可以通過模板和函式過載來實現,下面舉兩個例子 1 函式模板 template t max c...

C 中的多型

定義 同樣的訊息被不同型別的物件接收時產生不同的行為。原理 1.編譯時多型 靜態繫結 2.執行時多型 動態繫結 分類 1.過載 包括函式過載,運算子過載 靜態繫結 2.覆蓋 包括子類和父類間虛函式 虛析構函式和純虛函式 動態繫結 要求 1.函式名相同 2.引數不同 栗子 include using ...