class MyBaseClass
{
virtual public void Print()
{
Console.WriteLine("This is the base class.");
}
}
class MyDerivedClass : MyBaseClass
{
override public void Print()
{
Console.WriteLine("This is the derived class.");
}
}
class Program
{
static void Main()
{
MyDerivedClass derived = new MyDerivedClass();
MyBaseClass mybc = (MyBaseClass)derived;
derived.Print();
mybc.Print();
}
}
OUTPUT:派生類沒有調用基類的方法
This is the derived class.
This is the derived class.
我不明白爲什麼派生類的print()方法第二個電話打印,因爲我投mybc對象的基類。我期望它可以打印基類打印方法。我在這裏錯過了什麼嗎?
退房在本網站經過深思熟慮的討論類似被問到的問題:http://stackoverflow.com/questions/1334254/how-can-i-call-the-base-implementation-of-an-被覆蓋的虛擬方法 –
刪除覆蓋關鍵字,所有將工作正常 – 2015-10-05 08:40:29
@PranavPatel它將工作在技術意義上,但通常這將是一個糟糕的設計。 –