카테고리 없음

리스코프 치환원칙

drk_4 2023. 11. 12. 18:20
반응형

정의

부모 클래스의 인스턴스 대신에 자식 클래스의 인스턴스를 사용해도 코드가 원래 의도대로 작동해야한다. 

=> 자식 클래스의 인스턴스는 부모 클래스의 행동 규약에서 벗어나는 행동을 하면 안된다. 

 

리스코프 치환원칙에 위배되는 경우

1. 자식 클래스가 부모 클래스의 변수 타입을 바꾸거나, 메서드의 파라미터 또는 리턴 값의 타입 이나 개수를 바꾸는 경우

 

2. 자식 클래스가 부모 클래스의 메서드를 의도와 다르게 오버라이딩 하는 경우

- 코드를 실행해도 즉각적으로 에러가 나지 않아 발견하기 더 어려움

 

리스코프 치환원칙을 준수하는 자식 클래스를 만들려면

- 상속은 'A는 B이다' 라는 부분집합 관계가 성립하면 B를 부모로 하는 상속관계를 만들 수 있다. 

- 그러나 객체 상속 관계를 만들 때, A가 B의 행동 규약을 지킬 수 있는지도 함께 고려해야한다. 

반응형