2. Liskovの置換原則 (Liskov Sustitution Principle:LSP)

OCPの拡張。LSPを侵害するとOCPも侵害することになるが、逆はかならずしも真ならず。

サブクラスは基底クラスと置換可能でなければならない。

サブクラスは基底クラスのした約束をすべて守らなければならない、ということ。
Design by Contract の事前条件・事後条件を実装しているような処理系だと、サブクラスが基底クラスより事前条件を厳しくすること・事後条件を緩くすることはできない。
基底クラスが投げると言っていないチェック例外を投げることはできない、というのも例として挙げられる。