多型的定義:同一操作作用於不同的類的例項,不同的類將進行不同的解釋,最後產生不同的結果。有兩種形式:
1,編譯時的多型,體現在過載上,根據傳遞的引數,返回值,來決定實現的操作。
2,執行時的多型,體現在虛方法上,執行時,根據實際情況來決定實現何種操作。
具體多型的情況:
1,虛方法:通過virtual來實現。可以有方法體,可以被繼承類重寫。
class phone
}class huaweiphone : phone
}class program
}輸出結果
phone
huaweiphone
huaweiphone
2,抽象方法:通過關鍵字abstract 來實現,可以看做沒有方法體的虛方法。
abstract class phone
class huaweiphone : phone
}static void main(string args)
輸出結果
huaweiphone
huaweiphone
class phone
public virtual void call()
}class huaweiphone:phone
public override void call()//非密封的方法
}class u8800pro : huaweiphone
*/public override void call()//重寫沒有被密封的方法
}class program
}輸出結果:
phone
huaweiphone
huaweiphone
huaweiphone
calling frome u8800pro
class phone
public virtual void call()
}class huaweiphone : phone
public override void call()
}class program
}輸出結果
phone
call frome phone
huaweiphone
call frome huaweiphone
phone
call frome huaweiphone
5,抽象類:通過關鍵字abstract來實現,可以作為基類,但不能直接例項化。不能是密封類。
abstract class phone
}class huaweiphone:phone
public new void call()
}static void main(string args)
輸出結果:
huaweiphone
call from huaweiphone
huaweiphone
call from phone
sealed class phone
}class huaweiphone:phone //此處編譯出錯,phone不能被繼承
public new void call()
}
總結:
C 學習筆記之多型 多型的學習 多型學習
c 學習筆記之多型 多型的學習 多型學習 多型分為兩類 靜態多型 函式過載和運算子過載屬於靜態多型,復用函式名 動態多型 派生類和虛函式實現執行時多型 靜態多型和動態多型的區別 靜態多型的函式位址早繫結 編譯階段確定函式位址 動態多型的函式位址晚繫結 執行階段確定函式位址 動態多型滿足條件 動態多型...
C 學習筆記之 多型
目錄應用 計算器類 純虛函式和抽象類 虛析構和純虛析構 型別轉換 多型性提供介面與具體實現之間的另一層隔離,將 什麼 和 怎麼做 分開 分類 動態多型 函式位址晚繫結 include using namespace std 動物類 class animal class dog public anim...
新手菜鳥學習C 的筆記總結 之委託
委託 委託是什麼?通過的學習,我們知道 委託是乙個類,它定義了方法的型別,使得可以將方法當作另乙個方法的引數來進行傳遞,這種將方法動態地賦給引數的做法,可以避免在程式中大量使用if else switch 語句,同時使得程式具有更好的可擴充套件性。個人感覺,委託分為委託型別 就是可以接受哪種方法 和...