리스코프 교체 원칙 (Liskov Substitution Principle; LSP)

서브타입은 언제나 자신의 기반 타입(base type)으로 교체할 수 있어야한다.

if문과 instanceof 표현식이 수없이 많은 코드는 보통 LSP를 지키지 않아서 생기는 경우가 많다. 이는 곧 OCP도 지키지 않았다는 의미다.

LSP에 따르면, 기반 클래스(base class)의 사용자는 그 기반 클래스에서 유도된 클래스를 기반 클래스로써 사용하더라도 특별한 것을 할 필요없이 마치 우너래 기반 클래스를 사용하는 양 그대로 사용할 수 있어야 한다.

상속받은 자식 클래스의 어떤 함수를 호출하지 못하도록 제약사항을 걸려고 할때마다 아래의 방법들이 사용되면 LSP를 어기는 것은 아닐까 의심해볼수 있다.