虚方法与覆写方法

博客介绍了基类的引用调用派生类方法需满足的条件,即基类方法用virtual标注,派生类方法用override标注。还指出基类实例调用方法时,调用层次会沿继承层次向上传递,调用最高派生类中的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基类的引用调用派生类(derived class)中的方法时,要满足如下条件:

1.基类方法要用virtual标注

2.派生类方法要用override标注

 class MyBaseClass
    {
     virtual  public void Print()//基类方法用virtual
        {
            Console.WriteLine("This is base class");
        }
    }
   class  MyDerivedClass:MyBaseClass
   {
  
    override public void Print()//派生类用override
       {
           Console.WriteLine("This is derived  class.");
       }
   }
    class MySecondClass:MyDerivedClass
    {
      override  public void Print()//派生类用override
        {
            Console.WriteLine("This is second class");
        }
    }
class Program{

    static void Main(string[] args){

            MyDerivedClass derived = new MyDerivedClass();
            MyBaseClass mybc = (MyBaseClass)derived;//强制类型转换
            derived.Print();
            mybc.Print();
 }
}

运行效果:

若改为:

class Program{

    static void Main(String []argc){
        MySecondClass derived = new MySecondClass();
            MyBaseClass mybc = (MyBaseClass)derived;
            derived.Print();
            mybc.Print();
            Console.ReadKey();
      }
}

运行效果:

结论是:

基类实例mybc调用Print()方法时,调用层次会沿着继承层次向上传递,会调用最高派生类中的方法。

第一个Main()方法:

第二个Main()方法:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值