sealed的中文意思是密封,故名思義,就是由它修飾的類或方法將不能被繼承或是重寫。
sealed關鍵字的作用:
在類宣告中使用sealed可防止其它類繼承此類;在方法宣告中使用sealed修飾符可防止擴充類重寫此方法。
sealed修飾符主要用於防止非有意的派生,但是它還能促使某些執行時優化。具體說來,由於密封類永遠不會有任何派生類,所以對密封類的例項的虛函式成員的呼叫可以轉換為非虛擬呼叫來處理。
密封類:
密封類在宣告中使用sealed 修飾符,這樣就可以防止該類被其它類繼承。如果試圖將乙個密封類作為其它類的基類,c#將提示出錯。理所當然,密封類不能同時又是抽象類,因為抽象總是希望被繼承的。
在哪些場合下使用密封類呢?實際上,密封類中不可能有派生類。如果密封類例項中存在虛成員函式,該成員函式可以轉化為非虛的,函式修飾符virtual 不再生效。
讓我們看下面的例子:
1 abstract class abstractclass
2 5 sealed class sealedclass: abstractclass
6 9 }
如果我們嘗試寫下面的**
class otherclass: sealedclass
c#會指出這個錯誤,告訴你sealedclass 是乙個密封類,不能試圖從sealedclass 中派生任何類。
密封方法:
c#還提出了密封方法(sealedmethod) 的概念,以防止在方法所在類的派生類中對該方法的過載。對方法可以使用sealed 修飾符,這時我們稱該方法是乙個密封方法。
不是類的每個成員方法都可以作為密封方法密封方法,要作為密封方法必須對基類的虛方法進行過載,提供具體的實現方法。所以,在方法的宣告中,sealed 修飾符總是和override 修飾符同時使用。請看下面的例子**:
1 using system ;
2 class a
3 6
public virtual void g( )
7
8 }9 class b: a
10 13
override public void g( )
14
15 }
16 class c: b
17 20 }
類b 對基類a 中的兩個虛方法均進行了過載,其中f 方法使用了sealed 修飾符,成為乙個密封方法。g 方法不是密封方法,所以在b 的派生類c 中,可以過載方法g,但不能過載方法f。
c sealed關鍵字學習
sealed的中文意思是密封,故名思義,就是由它修飾的類或方法將不能被繼承或是重寫。在類宣告中使用sealed可防止其它類繼承此類 在方法宣告中使用sealed修飾符可防止擴充類重寫此方法。sealed修飾符主要用於防止非有意的派生,但是它還能促使某些執行時優化。具體說來,由於密封類永遠不會有任何派...
const關鍵字用法
1 const常量 如const int max 100 優點 const常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查,而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換時可能會產生意料不到的錯誤 邊際效應 2 const修飾類的資料成員 class a const...
restrict關鍵字用法
概括的說,關鍵字restrict只用於限定指標 該關鍵字用於告知編譯器,所有修改該指標所指向內容的操作全部都是基於 base on 該指標的,即不存在其它進行修改操作的途徑 這樣的後果是幫助編譯器進行更好的 優化,生成更有效率的彙編 舉個簡單的例子 int foo int x,int y 很顯然函式...