程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 密封類

密封類

編輯:關於C#

想想看,如果所有的類都可以被繼承,繼承的濫用會帶來什麼後果?類的層次結構體系將變得十分龐大,類之間的關系雜亂無章,對類的理解和使用都會變得十分困難。有時候,我們並不希望自己編寫的類被繼承。另一些時候,有的類已經沒有再被繼承的必要。C#提出了一個密封類(sealed class)的概念,幫助開發人員來解決這一問題。

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

在哪些場合下使用密封類呢?密封類可以阻止其它程序員在無意中繼承該類,而且密封類可以起到運行時優化的效果。實際上,密封類不可能有派生類,如果密封類實例中存在虛成員函數,該成員函數可以轉化為非虛的,函數修飾符virtual不再生效。

讓我們看下面的例子:

abstract class A
{
 public abstract void F();
}

sealed class B:A
{
 public override void F(){
   //F的具體實現代碼
 }
}

如果我們嘗試寫下面的代碼:

class C:B{}

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved