C#-多态
多态:让同一父类的对象,执行相同行为时有不同的表现,从而让同一对象有唯一的行为特征
多态的实现形式
-
编译时的多态:函数重载
-
运行时的多态:虚函数、抽象函数、接口
重要参与因素:虚函数(virtual)、重写函数(override)、根据实际需求 保留父类行为
同一个对象,调用同一个方法 → 有不同表现
class Father{
public void SpeakName(){
Console.WriteLine("Father的方法");
}
}
class Son:Father{
public new void SpeakName(){
Console.WriteLine("Son的方法");
}
}
------------------------------------------
Father f = new Son();
f.SpeakName();//调用父类方法
(f as Son).SpeakName();//调用子类方法
这种写法,会使子类调用同一个函数,却产生了不同的行为。导致代码释义混乱
同一对象,调用同一函数 → 有唯一表现
在父类中声明虚函数,在子类中进行重写 → 让同一对象有唯一的行为特征
class Father{
public virtual void SpeakName(){
Console.WriteLine("Father的方法");
}
}
class Son:Father{
public override void SpeakName(){
Console.WriteLine("Son的方法");
base.SpeakName();//调用父类的方法
}
}
------------------------------------------
Father f = new Son();
f.SpeakName();//调用子类方法
(f as Son).SpeakName();//调用子类方法
关键:父类的方法,用了virtual修饰。子类对其进行override
原文地址:https://blog.csdn.net/dcprime/article/details/143601314
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!