淺析C#中new、override、virtual關鍵字的區別

來源:互聯網
上載者:User
最近偶簡單的複習了下在C#中涉及到繼承這個特性時,所需要用到的關鍵字,其中有一些關鍵點,特地整理出來,方便大家查閱。在微軟的一次筆試和面試中也提到了這個問題:

一、在C#中,new這個關鍵字使用頻率非常高,主要有3個功能:

a)     作為運算子用來建立一個對象和調用建構函式。

b)     作為修飾符。

c)      用於在泛型聲明中約束可能用作型別參數的參數的類型。

在本文中,只具體介紹new作為修飾符的作用,在用作修飾符時,new關鍵字可以在衍生類別中隱藏基類的方法,也就說在使用衍生類別的方法是調用的方法是New關鍵字新定義出來的方法,而不是基類的方法。在不使用New關鍵字來隱藏基類方法也是可以的,編譯器會出現一個警告,提示如果有意去隱藏基類的方法,請使用New關鍵字修飾。

這裡有個注意事項就是New和Override這兩個關鍵字是互斥的。不可以同時使用。

二、 Override關鍵字主要是提供衍生類別對基類方法的新實現,重寫的基類方法必須和Override的方法具有相同的簽名, 此關鍵字不可以用於重寫非虛方法和靜態方法,與其配套使用的關鍵字是Virtual、abstract、Override。與此同時,Override方 法還不可以修改Virtual方法的可訪問性,Override方法和Virtual方法必須具有相同的存取修飾詞,不能使用修飾符 new、static、virtual 或 abstract 來修改 override 方法。

以下是一個小demo,展示了new和override的本質區別:

   

class Program

{

static void Main(string[] args)

{

contact ct1 = new class2();

contact ct2 = new class2();

ct1.prinf();

ct2.prinf();

}

}

abstract public class contact

{

public virtual void prinf()

{

Console.WriteLine ("這是虛方法");

}

}

public class class1 : contact

{

public override void prinf()

{

Console.WriteLine ("這是新的方法");

}

}

public class class2 : contact

{

public new void prinf()

{

Console.WriteLine ("這是另一個新的方法");

}

}

此demo運行結果為:

這是新的方法

這是虛方法

三、 Virtual 關 鍵字允許在衍生類別中重寫這些對象,預設情況下,方法是非虛擬,不可以重寫非虛方法,virtual關鍵字不可以與static、abstract、 private、override一起使用。Virtual關鍵字又是和override緊密不可分的,如果要實現Virtual方法就必須要使用 override或new關鍵字(new和override產生的機理不同)。

總結:New關鍵字主要用來區別衍生類別和基類同名方法的選擇問題,通過隱藏基類方法,達到使編譯器調用正確的方法的目的。Override主要用來對基類的方 
               法和虛方法進行重寫。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.