sealed(C 中的修飾符)

2021-05-23 14:15:22 字數 1239 閱讀 5931

當對乙個類應用 sealed 修飾符時,此修飾符會阻止其他類從該類繼承。

在下面的示例中,類 b 從類 a 繼承,但是任何類都不能從類 b 繼承。

class a {}

sealed class b : a {}

還可以在重寫基類中的虛方法或虛屬性的方法或屬性上使用 sealed 修飾符。這將使您能夠允許類從您的類繼承,並防止它們重寫特定的虛方法或虛屬性。

在下面的示例中,c 從 b 繼承,但 c 無法重寫在 a 中宣告並在 b 中密封的虛函式 f。

class a

protected virtual void f()

console.writeline("a.f");

protected virtual void f2()

console.writeline("a.f2");

class b : a

sealed protected override void f()

console.writeline("b.f");

protected override void f2()

console.writeline("b.f2");

class c : b

protected override void f2()

console.writeline("c.f2");

當在類中定義新的方法或屬性時,通過不將這些方法或屬性宣告為 virtual,可防止派生類重寫這些方法或屬性。將 abstract 修飾符用於密封類是錯誤的做法,因為抽象類必須由提供抽象方法或屬性的實現的類繼承。當應用於方法或屬性時,sealed 修飾符必須始終與 override 一起使用。由於結構是隱式密封的,因此它們不能被繼承。

sealed class sealedclass

public int x;

public int y;

class sealedtest2

static void main()

sealedclass sc = new sealedclass();

sc.x = 110;

sc.y = 150;

console.writeline("x = , y = ", sc.x, sc.y);

// output: x = 110, y = 150

'myderivedc' cannot inherit from sealed class 'sealedclass'.

修飾符 許可權修飾符

四種形式許可權修飾符的訪問情況 publicprotected不寫private 同乙個類中 四種都可以 同一包中的不同類 除了private剩下都可以 不同包下的子類 public protected 可以 不同包下的不同類 只有public可以 許可權修飾符 public protected 預...

C 中的訪問修飾符 修飾符 類

版本visual studio 2010 主要參考 修飾符用於修改型別和型別成員的宣告 訪問修飾符 訪問級別 public 訪問不受限制 類內和任何類外中訪問 protected 可訪問域限定於類內或從該類派生的類內 類內和該類的派生類 internal 可訪問域限定於類所在的程式集內 該類所在程式...

C 修飾符 類修飾符和成員修飾符

c 修飾符之類修飾符 public internal partial abstract sealed static internal 本程式集內的成員可以訪問。partial 部分類,可以將乙個類分成幾部分寫在不同檔案中,最終編譯時將合併成乙個檔案,且各個部分不能分散在不同程式集中。c 修飾符之成員...