상속을 사용해서 좋은지 나쁜지를 판단할 때에는 리스코프의 치환원칙을 사용합니다.

FUNCTIONS THAT USE POINTERS OR REFERENCES TO BASE
CLASSES MUST BE ABLE TO USE OBJECTS OF DERIVED CLASSES
WITHOUT KNOWING IT.

Child 클래스가 Parent 클래스의 서브클래스라고 해봅시다.

리스코프의 치환원칙은 "Parent형의 변수에 Child 클래스의 인스턴스를 대입해도 문제없이 사용할 수 있다" 라는 원칙입니다.

위 처럼 Parent를 상속받은 Child의 인스턴스로 Parent의 메소드인 foo나 bar를 호출해도 아무런 문제없이 잘 실행이 되어야 한다는 것입니다.

그런데 만약 Child에서는 foo라는 메소드는 제대로 구현이 되지 않아서 UnsupportedOperationException이 throw 되도록 구현해 놓았다면

이는  리스코프의 치환원칙에 위배되는 것입니다.

참고:  http://www.objectmentor.com/resources/articles/lsp.pdf 


리팩토링입문
카테고리 컴퓨터/IT > 프로그래밍/언어
지은이 히로시 유키 (한빛미디어, 2007년)
상세보기