国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

sealed在C#中的作用說明

2024-09-07 17:05:40
字體:
供稿:網(wǎng)友

  c語言仍然是比較常見的語言,今天錯新技術(shù)頻道小編為大家介紹sealed在C#中的作用說明,今天錯新技術(shù)頻道就要來給大家講講sealed在C#中的作用說明,一起進(jìn)入下文看看吧。

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

?

?

復(fù)制代碼 代碼如下:

?


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

?


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

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

?

?

復(fù)制代碼 代碼如下:

?


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 中的兩個虛方法均進(jìn)行了重載,其中F 方法使用了sealed 修飾符,成為一個密封方法。G 方法不是密封方法,所以在B 的派生類C 中,可以重載方法G,但不能重載方法F

看了錯新技術(shù)頻道的講解現(xiàn)在大家知道sealed在C#中的作用說明了吧,希望這些知識大家能好好的看一下,了解了對自己的幫助還是很大的。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 政和县| 洞头县| 大冶市| 商洛市| 桐庐县| 吴桥县| 永丰县| 武安市| 清镇市| 友谊县| 淅川县| 西畴县| 左贡县| 台中县| 行唐县| 谢通门县| 临汾市| 农安县| 辛集市| 江孜县| 灵川县| 临海市| 横山县| 房山区| 鱼台县| 苍山县| 水富县| 无为县| 大姚县| 嘉义县| 马龙县| 呈贡县| 六盘水市| 读书| 文安县| 汤阴县| 德令哈市| 清苑县| 石景山区| 三门县| 临湘市|