溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#中sealed關鍵字的作用是什么

發(fā)布時間:2020-10-15 19:23:24 來源:億速云 閱讀:116 作者:小新 欄目:編程語言

這篇文章主要介紹C#中sealed關鍵字的作用是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

sealed關鍵字的作用:
在類聲明中使用sealed可防止其它類繼承此類;在方法聲明中使用sealed修飾符可防止擴充類重寫此方法。
  sealed修飾符主要用于防止非有意的派生,但是它還能促使某些運行時優(yōu)化。具體說來,由于密封類永遠不會有任何派生類,所以對密封類的實例的虛擬函數(shù)成員的調(diào)用可以轉換為非虛擬調(diào)用來處理。
密封類:
密封類在聲明中使用sealed 修飾符,這樣就可以防止該類被其它類繼承。如果試圖將一個密封類作為其它類的基類,C#將提示出錯。理所當然,密封類不能同時又是抽象類,因為抽象總是希望被繼承的。
  在哪些場合下使用密封類呢?實際上,密封類中不可能有派生類。如果密封類實例中存在虛成員函數(shù),該成員函數(shù)可以轉化為非虛的,函數(shù)修飾符virtual 不再生效。
  讓我們看下面的例子:

abstract class AbstractClass 
{ 
public abstract void Method( ) ; 
} 
sealed class SealedClass: AbstractClass 
{ 
public override void Method( ) 
{ //... } 
}



  如果我們嘗試寫下面的代碼
class OtherClass: SealedClass
{
}

  C#會指出這個錯誤,告訴你SealedClass 是一個密封類,不能試圖從SealedClass 中派生任何類。
密封方法:
C#還提出了密封方法(sealedmethod) 的概念,以防止在方法所在類的派生類中對該方法的重載。對方法可以使用sealed 修飾符,這時我們稱該方法是一個密封方法。
  不是類的每個成員方法都可以作為密封方法密封方法,要作為密封方法必須對基類的虛方法進行重載,提供具體的實現(xiàn)方法。所以,在方法的聲明中,sealed 修飾符總是和override 修飾符同時使用。請看下面的例子代碼:

using System ; 
class A 
{ 
public virtual void F( ) 
{ 
Console.WriteLine("A.F") ; 
} 
public virtual void G( ) 
{ 
Console.WriteLine("A.G") ; 
} 
} 
class B: A 
{ 
sealed override public void F( ) 
{ 
Console.WriteLine("B.F") ; 
} 
override public void G( ) 
{ 
Console.WriteLine("B.G") ; } 
} 
class C: B 
{ 
override public void G( ) 
{ 
Console.WriteLine("C.G") ; 
} 
}


類B 對基類A 中的兩個虛方法均進行了重載,其中F 方法使用了sealed 修飾符,成為一個密封方法。G 方法不是密封方法,所以在B 的派生類C 中,可以重載方法G,但不能重載方法F

以上是C#中sealed關鍵字的作用是什么的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI