シール

2005 年 8 月 12 日

メソッドまたはクラスをシールドすると、サブクラスがそれをオーバーライドできなくなります。

C# ではキーワード sealed を使用し、Java ではキーワード final を使用します。C# や C++ などの言語ではメソッドをデフォルトでシールド対象と見なしますが(仮想キーワードを使用してシールドを解除します)、Java などの他の言語ではデフォルトでメソッドをシールド対象外とします。

シールドが良い考えかどうかについてはかなり物議を醸しています。指導志向を持つ人々は、どのクラスと機能をオーバーライドできるようにするかを非常に注意深く検討し、拡張子を安全であると考えるものだけをオーバーライドするように制限します。支援志向を持つ人々は、拡張子が何を必要とするかを予測できないため、柔軟性を否定するべきではないと考えています。つまり、拡張子は好きなものをオーバーライドできますが、注意する責任を負う必要があります。ほとんどの場合、私は支援者である傾向があります。