派生を断固許さない。それがsealed

プログラミングC# 第6版 4.6


「派生を禁ずる!」まるでヒョウが言いそうな台詞ですね。

とまぁそれはさておき、classを宣言するときにsealedとつけると、そのクラスから派生クラスを禁じることができます。

// sealedをつける
sealed class CBase {
}

class CClass : CBase {
}

class Program {
    static void Main () {
    }
}
$ csc main.cs
Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1
Copyright (C) Microsoft Corporation. All rights reserved.

main.cs(5,7): error CS0509: 'CClass': シール型 'CBase' から派生することはできません。
main.cs(3,14): (以前のエラーに関連するシンボルの位置)

派生を禁止するとは若干乱暴過ぎる気もしますが、禁止させたいと思ったときに禁止できる仕組みがちゃんとあるというのは良いですね。