프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다. 다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 한다는 것, 다형성을 지원하기 위한 원칙, 인터페이스를 구현한 구현 체는 믿고 사용하려면, 이 원칙이 필요하다. 단순히 컴파일을 실패하고 성공하는 것을 얘기하는 것이 아니다. 즉, 상위타입에서 어떤 동작하는 기능이 있는데 이를 확장한 하위타입에서도 상위타입과 동일하게 동작해야 합니다. 위키백과에 실려있는 전형적인 위반의 예로 코드를 만들어 보겠습니다. 너비와 높이의 조회(getter) 및 할당(setter) 메서드를 가진 직사각형 클래스로부터 정사각형 클래스를 파생하는 경우를 들 수 있습니다. 편의상 getter는 생략하겠습니다. package SOL..