類別存取修飾詞
| 修飾詞 | 說明 |
| `internal` (預設) | 僅同一組件可見 |
| `public` | 任何參考組件可見 |
巢狀類別可用 `private`/`protected`/`protected internal`/`private protected`。
抽象類別
- `abstract class`:不可實例化,可包含抽象/虛擬/實例成員
- 衍生類別**必須**實作所有抽象成員 (除非也是抽象類別)
- 可提供部分實作,共享程式碼
密封類別
- `sealed class`:不可被繼承,葉節點類別
- 隱含不可為抽象
- 效能優化:JIT 可內聯非虛擬呼叫
組合使用
public abstract class Animal { public abstract void Sound(); }
public sealed class Dog : Animal { public override void Sound() => Console.WriteLine("Wang"); }
// class Puppy : Dog { } // 編譯錯誤:密封類別不可繼承
程式碼驗證
abstract class MyClass4 { }
sealed class MyClass7 { }
new MyClass4(); // 錯誤:抽象類別不可實例化
new MyClass7(); // 正常
選擇指南
| 需求 | 選擇 |
| 提供基底實作 + 強制衍生類別實作契約 | abstract class |
| 純契約、多重實作、無共享程式碼 | interface |
| 不希望被繼承、效能敏感、領域模型葉節點 | sealed class |
| 一般可實例化、可繼承類別 | class (無修飾詞) |
- 上一篇文章: C# 類別方法存取修飾詞完整解析
- 下一篇文章: C# 繼承核心:多型與隱藏 (new/override) 實戰對比
Copyright ©
程式碼之家 All Rights Reserved