6

ウィキペディアの記事を見た後、「サブタイプ」という単語に慣れていません。

私はリスコフの置換を採用しました。これは、をとるメソッドがある場合、意図しない副作用なしにaまたはwhereAnimalを渡すことができるはずであることを意味します。CatAnimalCat : Animal

これはリスコフの置換が指すものですか?

4

2 に答える 2

3

丁度。Animal を取るものは、Dog、Cat、およびサブクラス (必要に応じて品種) を取ることができる必要があります。メソッドは互換性があります。

また、サブタイプで事前条件を強化したり、事後条件を弱めたりすることはできないことに注意してください。そうしないと、特定のサブタイプにスロットを入れることができ、周囲のコードがサブクラスが許容できない特定の前提条件を課したため、それが壊れてしまいます。これを実際に実装するのは難しい場合があります。詳細については、円/楕円の問題を参照してください。

于 2013-02-06T13:11:53.983 に答える
0

はい。リコフの置換原則は、プログラム モジュールが基本クラスを使用している場合、プログラム モジュールの機能に影響を与えることなく、基本クラスへの参照を派生クラスに置き換えることができると述べています。

于 2013-02-06T13:11:10.767 に答える