如何在多级继承c#中调用虚函数和覆盖函数

时间:2016-06-04 09:45:17

标签: c# inheritance

我知道如何调用虚拟和重写方法,但我只了解一个级别的继承。以下程序的输出是什么?编译器如何使用多级继承?

public class Parent
    {
        public virtual void Method()
        {
            Console.WriteLine("Parent Method");
        }
    }

    public class Child : Parent
    {
        public virtual void Method()
        {
            Console.WriteLine("Child Method");
        }
    }

    public class Child1 : Child
    {
        public override void Method()
        {
            Console.WriteLine("Child1 Method");
        }
    }

    public class Child2 : Child1
    {
        public override void Method()
        {
            Console.WriteLine("Child2 Method");
        }
    }

 public class Program
    {
        static void Main(string[] args)
        {
            Parent p1 = new Child();
            p1.Method();
            Parent p2 = new Child1();
            p2.Method();
            Parent p3 = new Child2();
            p3.Method();
        }
    }

1 个答案:

答案 0 :(得分:0)

如果你遵循这个简单的逻辑就很容易理解。

Parent p3 = new Child2();

p3可用结构属于Parent类型,而重写的具体实现方法则使用实际对象Child2

这是因为我们实际使用的对象是new Child2()