你能告诉我为什么下面代码的结果是BaseClass::method
?我在想 DerivedClass2 只会覆盖被声明为新的 DerivedClass1 的虚拟方法,这意味着不使用 BaseClass 方法。或者由于 DerivedClass2 覆盖了 DerivedClass1 的虚拟方法,因此存在动态绑定,它将调用 DerivedClass2 方法版本,而不是 DerivedClass1 或 BaseClass 中的一个。有什么帮助吗?我的推理有什么问题?谢谢
class BaseClass
{
public void method() { Console.WriteLine("BaseClass::method"); }
}
class DerivedClass1 : BaseClass
{
public new virtual void method() { Console.WriteLine("DerivedClass1::method"); }
}
class DerivedClass2 : DerivedClass1
{
public override void method(){ Console.WriteLine("DerivedClass2::method"); }
}
class Program
{
static void Main(string[] args)
{
BaseClass e = new DerivedClass2();
e.method();//BaseClass::method. But Why???
Console.ReadLine();
}
}