昨天參加面試,遇到乙個關於new修飾符的題,由於本人不慎,給搞錯了,糾其原因,還是因為我的c#基礎知識不牢固,關於override與new的區別平時沒有太注意。在此,為大家分享一下:
**如下:
public
class
baseclass
public
virtual
void
method1()
}public
class
derivedclass : baseclass
public
override
void
method1()
}問題:
1、初始化一例項:baseclass tempclass=new derivedclass()之後,會輸出什麼結果?
2、把derivedclass類中的override換成 new之後,又會輸出什麼結果?
正確答案:
1、value!=2
2、method1 in baseclass
msdn上說:new 關鍵字在用作修飾符時,可以顯式隱藏從基類繼承的成員。隱藏繼承的成員意味著該成員的派生版本將替換基類版本。也就是說,在用new關鍵字時,派生類與基類的這兩個相同簽名的方法已經沒有任何聯絡了。
而用override時,它與new的區別主要是,overrid是重寫了基類的方法,new是隱藏、覆蓋了基類的方法。。
new與override的區別
override是在原來的基礎上覆蓋,現在就只有子類的該方法,而父類的該方法已經不存在 new是子類生成了乙個與父類同名的新方法,此時父類的這個方法還是存在的 using system using system.collections.generic using system.linq using ...
關於C 的new與override
先放出來兩個基類和派生類 public class baseclass public void method2 string desc public class derivedclass baseclass public newvoid method2 string desc new除了可以建立物件...
C 中new和override區別
在c 中實現重寫方法,可以用new和override兩個關鍵字來實現,究竟他們之間有什麼區別呢?下面,我以例子來說明他們之間的微妙區別 public class grandclass 基類 public virtual void method 用virtual才可以在子類中用override,而ne...