리스코프 치환 원칙

stoph·2022년 9월 20일
0

객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.

하위 클래스는 인터페이스 규약을 지켜서 작성되어야 한다. 다형성을 지원하기 위한 원칙, 인터페이스를 구현한 구현체는 믿고 사용하려면 이 원칙이 필요하다.

개념만으로는 한번에 이해하는게 좀 어렵기 때문에 예시를 들어보자

예시

자동차 인터페이스가 있고 여기에는 엑셀, 브레이크 등등의 메서드가 있다.
그리고 자동차 인터페이스를 상속 받은 A라는 객체가 있다.

A 객체를 작성할 때, 액셀을 앞으로 가는 기능이 아닌 다른 기능으로 작성했다고 치자.
컴파일은 문제없이 성공할 것이다. 하지만 실제로 동작할 때는 액셀이라는 기능이 원래 의도한 대로 작동하지 않을 것이다.

이와 같이, 정해진 규약을 지키지 않고 하위 클래스를 작성하면 LSP를 위반했다고 본다.

정리

LSP는 객체지향의 다형성을 활용하여 확장성 획득을 보장하는 원칙이다.
일반적으로 선언은 상위 클래스, 생성은 하위 클래스로 하는 방법을 많이 사용한다.
따라서, 생성된 하위 클래스가 원래 의도한 대로 잘 동작하게 하려면 LSP를 준수하여 클래스를 작성해야 한다.

참고

Youtube - 널널한 개발자
인프런 - 스프링 핵심 원리 기본편 (김영한)

0개의 댓글