我知道如何调用虚拟和重写方法,但我只了解一个级别的继承。以下程序的输出是什么?编译器如何使用多级继承?
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();
}
}
答案 0 :(得分:0)
如果你遵循这个简单的逻辑就很容易理解。
Parent p3 = new Child2();
p3
可用结构属于Parent
类型,而重写的具体实现方法则使用实际对象Child2
。
这是因为我们实际使用的对象是new Child2()