**Liskov Substitution Principle(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() == ;
}
