C#中重寫(override)和覆蓋(new)的區別

來源:互聯網
上載者:User
重寫

用關鍵字 virtual 修飾的方法,叫虛方法。可以在子類中用override 聲明同名的方法,這叫“重寫”。相應的沒有用virtual修飾的方法,我們叫它實方法。
重寫會改變父類方法的功能。
看下面示範代碼:#region 重寫

public class C1
{
    public virtual string GetName()
    {
        return "徐明祥";
    }
}

public class C2 : C1
{
    public override string GetName()
    {
        return "xumingxiang";
    }
}

 C1 c1 = new C1();
 Console.WriteLine(c1.GetName());//輸出“徐明祥”

 C2 c2 = new C2();
 Console.WriteLine(c2.GetName());//輸出“xumingxiang”

 //重點看這裡

 C1 c3 = new C2();
 Console.WriteLine(c3.GetName());//輸出“xumingxiang” 

#endregion

 

覆蓋

在子類中用 new 關鍵字修飾 定義的與父類中同名的方法,叫覆蓋。
覆蓋不會改變父類方法的功能。

看下面示範代碼:#region 覆蓋

public class C1
{
    public string GetName()
    {
        return "徐明祥";
    }
}

public class C2 : C1
{
    public new string GetName()
    {
        return "xumingxiang";
    }
}

C1 c1 = new C1();
Console.WriteLine(c1.GetName());//輸出“徐明祥”

C2 c2 = new C2();
Console.WriteLine(c2.GetName());//輸出“xumingxiang”

//重點看這裡,和上面的重寫作比較

C1 c3 = new C2();
Console.WriteLine(c3.GetName());//輸出“徐明祥” 

#endregion

 

總結

1:不管是重寫還是覆蓋都不會影響父類自身的功能(廢話,肯定的嘛,除非代碼被改)。

2:當用子類建立父類的時候,如 C1 c3 = new C2(),重寫會改變父類的功能,即調用子類的功能;而覆蓋不會,仍然調用父類功能。

3:虛方法、實方法都可以被覆蓋(new),抽象方法,介面 不可以。

4:抽象方法,介面,標記為virtual的方法可以被重寫(override),實方法不可以。

5:重寫使用的頻率比較高,實現多態;覆蓋用的頻率比較低,用於對以前無法修改的類進行繼承的時候。

 

原文地址:http://www.cnblogs.com/xumingxiang/archive/2012/04/14/override_new.html 作者 : 徐明祥
出處:http://www.cnblogs.com/xumingxiang 
著作權:本文著作權歸作者和部落格園共有
轉載:歡迎轉載,為了儲存作者的創作熱情,請按要求【轉載】,謝謝
要求:未經作者同意,必須保留此段聲明;必須在文章中給出原文串連;否則必究法律責任

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.