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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章