私は今夜、ワードのwikiでリスコフの置換原則の元の声明に出くわしました。
ここで必要なのは、次の置換プロパティのようなものです。タイプSのオブジェクトo1ごとに、タイプTのオブジェクトo2があり、Tに関して定義されたすべてのプログラムPに対して、o1が置換されたときのPの動作は変更されません。 o2の場合、SはTのサブタイプです。」-Barbara Liskov、Data Abstraction and Hierarchy、SIGPLAN Notices、23、5(1988年5月)。
私は常に述語論理の解析に夢中になっているので(最初はCalc IVに失敗しました)、上記がどのように変換されるかを理解しています。
基本クラスへのポインタまたは参照を使用する関数は、それを知らなくても派生クラスのオブジェクトを使用できる必要があります。
私が理解していないのは、Liskovが説明するプロパティが、SがTのサブタイプであり、その逆ではないことを意味している理由です。
たぶん私はまだOOPについて十分に知らないのですが、なぜLiskovのステートメントは可能性S-> Tのみを許可し、T-> Sを許可しないのですか?