だから私はsealed class
インシャープから継承したいと思い、やけどを負った。ソースにアクセスできない限り、封印を解除する方法はありません。
それから、「なぜsealed
存在するのか」と考えさせられました。4ヶ月前。次のような多くのことを読んだにもかかわらず、私はそれを理解できませんでした。
- Jon Skeetの願いは、「クラスは.NETでデフォルトで封印されました。」
- 継承よりも構成を優先しますか?
- 「すべてのクラスを封印するべきではありません(...)」
- Sealedクラスをどのようにモックしますか?
それ以来、すべてを消化しようとしましたが、それは私にとってはやりすぎです。最終的に、昨日私はそれをもう一度試しました。私はそれらすべてをもう一度スキャンし、さらにいくつかをスキャンしました:
- クラスが「抽象」または「最終/封印」以外のものでなければならないのはなぜですか?
- 15年以上のプログラミングで、すでにリンクされている質問からの答えのうち、最初にSOLIDを聞いたことがあり、明らかに4ヶ月前にそれをすべて読んでいませんでした
最後に、熟考した後、新しいタイトルに基づいて元の質問を大幅に編集することにしました。
古い質問が広すぎると主観的でした。それは基本的に尋ねていました:
- 旧称:シールを使用する1つの正当な理由
- 本文:シールクラスを適切に変更する方法 継承を忘れますか?コンポジションを使用しますか?
しかし、今、理解すること(私は昨日なかった)すべてのsealed
継承を阻止されず、そして私たちは、実際に使用する必要がありますすることができます継承上の組成を、私は私がした必要なものを実現実用例。
私はここに私の質問は正確に何を(実際には常にされている)であると思いMr.Mindorはチャットで私の提案:どのように余分なコストの原因継承のために設計することができますか?