Closed cheewr85 closed 2 years ago
리스코프 치환 원칙은 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다는 의미임
쉽게 보면 특정 메소드가 상위 타입을 인자로 사용한다고 할 때, 그 타입의 하위 타입도 문제없이 정상적으로 작동을 해야 한다는 것
이 말을 다시 보고 책 58pg의 코드 10-4를 본다면 이렇게 정의를 하게 된다면 이는 구현 클래스의 객체와 비교할 때만 true를 반환함
즉, 59pg 처럼 CounterPoint로 활용을 한 들 unitCircle의 onUnitCircle에서 CounterPoint의 인스턴스를 절대로 같게 쓸 수 없음, Set에서 equals메서드로 contains을 비교할 것인데, 이 정의상 해당 인스턴스와 클래스를 비교할 수 없음
그래서 리스코프 원칙에 위배되는 것이고 그래서 60페이지와 같이 ColorPoint에서 Point를 반환하게끔 하여서 이런 문제를 해결하여 equals를 쓴 것이라고 볼 수 있음
[질문] 58pg
리스코프 치환 원칙을 위배했다고 했는데 이 리스코프 치환 원칙과 어떤식으로 위배가 되어서 60pg 처럼 처리가 된 것인지