Liskov置換原則(LSP) は、サブタイプのオブジェクトが基本型の代わりに使用可能であり、プログラムの正確性を損なわない ことを規定しています。Base で動作するコードは、あらゆる Subclass でも動作する必要があります — 同じ動作上の期待、驚きなし。
典型的な違反: Square extends Rectangle
java
{
w, h;
{ .w = w; }
{ .h = h; }
{ w * h; }
}
{
{ .w = w; .h = w; }
{ .w = h; .h = h; }
}
{
r.setWidth();
r.setHeight();
r.area() == ;
}
