継承を禁止させるには?

prohibit-inherit.png

なぜ継承を禁止させたいときがあるのか?

継承かコンポジションかのページも参考になりますが、ざっくり言うと、
自分の作ったクラスを、継承して使ってほしくないとき。
メンバ変数として使ってほしいときにやります。
なんで継承してほしくないのかというと、
継承するとパフォーマンスが落ちるから、とか
継承して無駄にソースコードを壮大にしないでほしいとか
とにかく、継承して勝手なことをされては困るときです。

継承を禁止させるには?

C#の場合はシールドクラス[4]という方法がある。
Javaの場合はクラスにfinal修飾子をつければok!!
また、ある特定の関数だけ、オーバーライドしてほしくない場合は、関数の先頭にfinalをつける。
また、javaの場合コンストラクタにprivateをつけることによってでも継承を防ぐことが出来ます。

Bibliography
1. [C#[Java] 継承を誤って使う人が多い (2010/10/23)]

when-inheritance

サポートサイト Wikidot.com when-inheritance