{
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
MSDN上說:new 關鍵字在用作修飾符時,可以顯式隱藏從基類繼承的成員。隱藏繼承的成員意味着該成員的派生版本將替換基類版本。也就是說,在用new關鍵字時,派生類與基類的這兩個相同簽名的方法已經沒有任何聯繫了。
而用override時,它與new的區別主要是,overrid是重寫了基類的方法,new是隱藏、覆蓋了基類的方法。。