リスコフの置換原則

リスコフの置換原則（りすこふのちかんげんそく、）は、オブジェクト指向プログラミングにおいて、サブタイプのオブジェクトはスーパータイプのオブジェクトの仕様に従わなければならない、という原則である。リスコフの置換原則を満たすサブタイプを と呼ぶ。
リスコフの置換原則の概念は最初、1987年10月のOOPSLAでのバーバラ・リスコフの基調講演 にて、インフォーマルな形で紹介された。より形式的な定義は1994年のリスコフとの共著論文 “” で与えられた。
定義.
リスコフの置換原則は において以下のように説明されている：
より形式的な定義は で与えられており、以下のように要約されている：
ここで性質 はオブジェクトの振る舞いを表す述語である。「振る舞い」はオブジェクトの操作（メソッド）が満たすべき事前条件と事後条件によって特徴付けられる。
振る舞いサブタイピング.
リスコフの置換原則では、ホーア論理に準拠して、振る舞いの事前条件と事後条件に焦点を当てたオブジェクトの代入可能性が要点にされている。その目的は、基底型の変数に派生型の値を代入しても支障をきたさないこと、基底型オブジェクトを派生型オブジェクトで型安全に代替できることである。
リスコフの置換原則は、基底型からの派生型の定義に際して、以下の項目の順守を提唱している。
条件を強めるとはプロセス上の状態の取り得る範囲を狭くすることであり、条件を弱めるとはプロセス上の状態の取り得る範囲を広くすることである。これは実装視点では様々なアサーションの複合になる。例えば型の汎化/特化、数値の範囲、データ構造の内容範囲、コードディスパッチ先の選択範囲といった様々な事柄を含む。