C#支持基於接口的多態和基於繼承的多態。
今日簡單地學了下基於繼承的多態,大致內容如圖所示。
來說說基於繼承的多態是如何實現的?
首先,要知道如何重寫父類方法。
重寫父類方法就是修改它的實現,或者就是在子類中對繼承的父類方法重新編寫。
在父類中用“virtual”關鍵字聲明的方法(俗稱虛擬方法),在子類中可以重寫。
例如我們在上一章的Person類上定義一個虛擬方法:
public virtual void Dispaly()
{
Console.WriteLine("姓名:{0},性別:{1},年齡:{2}", this._name, this._gender, this._age);
}
子類中使用“override”關鍵字聲明重寫,來實現對父類中的虛擬方法修改或者重新編譯。
例如在上一章的Student類上重新Person類的Dispaly方法:
//重寫父類的Dispaly的虛擬方法。
public override void Dispaly()
{
Console.WriteLine("Student子類重寫父類的方法。");
}
或者新建一個Tercher類,繼承Person類,重寫並調用Dispaly方法:
public class Terchar : Person
{
public override void Dispaly()
{
Console.WriteLine("Tercher子類重寫並調用父類的方法");
base.Dispaly(); //調用父類的Dispaly方法顯示。
}
}
注意:多態和重寫是緊密聯繫的,子類重寫方法的訪問權限和父類的虛擬方法的訪問權限必須一致。
這裏建議可以學習下函數的重載以及動態多態性:C#多態性 | 菜鳥教程