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#多态性 | 菜鸟教程