override與new的區別

 

代碼如下:


 
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 關鍵字,則派生類的對象將調用該方法,而不是調用基類方法。

 

 

發佈了93 篇原創文章 · 獲贊 3 · 訪問量 49萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章