ウィキペディアの記事を見た後、「サブタイプ」という単語に慣れていません。
私はリスコフの置換を採用しました。これは、をとるメソッドがある場合、意図しない副作用なしにaまたはwhereAnimal
を渡すことができるはずであることを意味します。Cat
Animal
Cat : Animal
これはリスコフの置換が指すものですか?
ウィキペディアの記事を見た後、「サブタイプ」という単語に慣れていません。
私はリスコフの置換を採用しました。これは、をとるメソッドがある場合、意図しない副作用なしにaまたはwhereAnimal
を渡すことができるはずであることを意味します。Cat
Animal
Cat : Animal
これはリスコフの置換が指すものですか?
丁度。Animal を取るものは、Dog、Cat、およびサブクラス (必要に応じて品種) を取ることができる必要があります。メソッドは互換性があります。
また、サブタイプで事前条件を強化したり、事後条件を弱めたりすることはできないことに注意してください。そうしないと、特定のサブタイプにスロットを入れることができ、周囲のコードがサブクラスが許容できない特定の前提条件を課したため、それが壊れてしまいます。これを実際に実装するのは難しい場合があります。詳細については、円/楕円の問題を参照してください。
はい。リコフの置換原則は、プログラム モジュールが基本クラスを使用している場合、プログラム モジュールの機能に影響を与えることなく、基本クラスへの参照を派生クラスに置き換えることができると述べています。