自学内容网 自学内容网

C#-多态

多态:让同一父类的对象,执行相同行为时有不同的表现,从而让同一对象有唯一的行为特征

多态的实现形式
  1. 编译时的多态:函数重载

  2. 运行时的多态:虚函数、抽象函数、接口

重要参与因素:虚函数(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)!