c sealed關鍵字學習

2021-09-10 19:01:43 字數 1147 閱讀 2186

sealed的中文意思是密封,故名思義,就是由它修飾的類或方法將不能被繼承或是重寫。

在類宣告中使用sealed可防止其它類繼承此類;在方法宣告中使用sealed修飾符可防止擴充類重寫此方法。

sealed修飾符主要用於防止非有意的派生,但是它還能促使某些執行時優化。具體說來,由於密封類永遠不會有任何派生類,所以對密封類的例項的虛函式成員的呼叫可以轉換為非虛擬呼叫來處理。

密封類在宣告中使用sealed 修飾符,這樣就可以防止該類被其它類繼承。如果試圖將乙個密封類作為其它類的基類,c#將提示出錯。理所當然,密封類不能同時又是抽象類,因為抽象總是希望被繼承的。

在哪些場合下使用密封類呢?實際上,密封類中不可能有派生類。如果密封類例項中存在虛成員函式,該成員函式可以轉化為非虛的,函式修飾符virtual 不再生效。

讓我們看下面的例子:

abstract class abstractclass

sealed class sealedclass: abstractclass

}

如果我們嘗試寫下面的**

class otherclass: sealedclass

c#會指出這個錯誤,告訴你sealedclass 是乙個密封類,不能試圖從sealedclass 中派生任何類。

c#還提出了密封方法(sealedmethod) 的概念,以防止在方法所在類的派生類中對該方法的重寫。對方法可以使用sealed 修飾符,這時我們稱該方法是乙個密封方法。

不是類的每個成員方法都可以作為密封方法密封方法,要作為密封方法必須對基類的虛方法進行重寫,提供具體的實現方法。所以,在方法的宣告中,sealed 修飾符總是和override 修飾符同時使用。請看下面的例子**:

using system ;

class a

public virtual void g( )

}class b: a

override public void g( )

}class c: b

}

類b 對基類a 中的兩個虛方法均進行了重寫,其中f 方法使用了sealed 修飾符,成為乙個密封方法。g 方法不是密封方法,所以在b 的派生類c 中,可以重寫方法g,但不能重寫方法f。

C sealed關鍵字用法

sealed的中文意思是密封,故名思義,就是由它修飾的類或方法將不能被繼承或是重寫。sealed關鍵字的作用 在類宣告中使用sealed可防止其它類繼承此類 在方法宣告中使用sealed修飾符可防止擴充類重寫此方法。sealed修飾符主要用於防止非有意的派生,但是它還能促使某些執行時優化。具體說來,...

學習this關鍵字

在學習msdn的過程中加入一點自己的理解 先學習類例項使用this 以下是 this 的常用用途 printing method public void printemployee nalias name alias passing the object to the calctax method ...

new關鍵字 this關鍵字 base關鍵字

使用new,所做的三件事 1.類是引用物件,引用物件是在堆中開闢空間 在堆中開闢空間 2.在開闢的堆空間中建立物件 3.呼叫物件的構建函式 4.隱藏父類成員 子類的成員可以與隱藏從父類繼承的成員,類似於重寫。public new void sayhello this關鍵字的使用 1.代表當前類的物件...