class Base
{
public virtual void Method()
{
Console.WriteLine("Base method");
}
}
class Derived : Base
{
public override void Method()
{
Console.WriteLine("Derived method");
}
}
class MyClient
{
public static void Main()
{
Base b1 = new Derived();
b1.Method(); // Displays 'Base Method'
Console.ReadLine();
}
}
应该输出什么?
它是怎么来的?请解释答案 0 :(得分:1)
输出应该是,是,`派生方法。“当你覆盖派生类中的方法时,你正在为该类的任何实例更改该方法的实现。
因此,即使您将b1
引用为Base
,运行时也知道它实际上是Derived
的实例,并将使用后者的实现。
答案 1 :(得分:0)
它将显示“派生方法”。现在来看代码,你在Class Myclient
中究竟做了什么。看看你正在用B
类构造函数创建一个Derived
类的对象。运行时间将经过{{1} } class,并创建derived
类的实例。结果将是“派生方法”