代碼如下:
public class baseClass
{
public baseClass()
{
Method1();
}
public virtual void Method1()
{
Console.WriteLine("Method1 in baseClass");
}
}
public class derivedClass : baseClass
{
private int value;
public derivedClass()
{
value = 2;
}
public override void Method1()
{
if (value == 2)
Console.WriteLine("value==2");
else
Console.WriteLine("value!=2");
}
}
問題:
1、初始化一實例:baseClass tempClass=new derivedClass()之後,會輸出什麼結果?
2、把derivedClass類中的override換成 new之後,又會輸出什麼結果?
正確答案:
1、value!=2
2、Method1 in baseClass
也就是說,在用new關鍵字時,派生類與基類的這兩個相同簽名的方法已經沒有任何聯繫了。
· 如果派生類中的方法前面帶有 new 關鍵字,則該方法被定義爲獨立於基類中的方法。
· 如果派生類中的方法前面帶有 override 關鍵字,則派生類的對象將調用該方法,而不是調用基類方法。