http://martinfowler.com/bliki/Seal.html

メソッドやクラスをシール(隠)して、 サブクラスがオーバーライドできないようにする。

C#では「sealed」というキーワードを使う。 Javaでは「final」というキーワードを使う。

「シール」という考えが是か非かという論争が数多く巻き起こっている。 DirectingAttitude派は、どのクラスや機能をオーバーライド可能にするかについて慎重である。また、安全と思われる個所に限定して拡張可能にしようとしている。 一方、EnablingAttitude派は、どの部分が拡張されるかは分からないから柔軟にしておこうという姿勢をとっている——つまり、どこでも拡張可能にしている。ただし、自己責任であるが。 だいたいいつもそうだが、この点についても私はEnablingAttitude派になるだろう。