以下のコードの結果が である理由を教えてくださいBaseClass::method。DerivedClass2 は、新しいものとして宣言されている DerivedClass1 の仮想メソッドをオーバーライドするだけだと考えていました。つまり、BaseClass メソッドは使用されません。または、DerivedClass2 は DerivedClass1 の仮想メソッドをオーバーライドするため、DerivedClass1 または BaseClass のメソッドではなく、DerivedClass2 メソッド バージョンを呼び出す動的バインディングがあります。何か助けはありますか?私の推論の何が問題になっていますか?ありがとう
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();
}
}