虚方法与覆写方法

    xiaoxiao2023-10-18  169

    基类的引用调用派生类(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()方法:

     

    最新回复(0)