我正在讀這篇文章 Overriding vs method hiding虛擬關鍵字是否調用大多數派生方法的定義?
我讀到「..When虛擬方法被調用的對象上,則該方法最派生版本被稱爲」
但是,當我執行以下代碼:
class A
{
public virtual void print()
{
Console.WriteLine("A called");
Console.Read();
}
}
class B :A
{
public override void print()
{
Console.WriteLine("B called");
Console.Read();
}
}
class C : B
{
public override void print()
{
Console.WriteLine("C called");
Console.Read();
}
}
static void Main(string[] args)
{
B b = new B();
b.print(); it prints B?
}
它打印B。如果上面引用的陳述是真的,它不應該是「C」嗎? 我錯過了什麼?在這種情況下,「多數派生」是什麼意思?
實際實例的派生最多被稱爲 - 如果您實例化B,則會打印B。試試'A a = new B(); a.print();'或'A a = new C(); a.print();' – Marwie
@Marwie它會打印A – Arbaaz
不,它會打印B或C.嘗試一下。 – Marwie