(2-3) SOLID(객체 지향 설계): 리스코프 치환의 원칙(LSP)

728x90

LSP

서브 타입은 언제나 자신의 기반(상위) 타입으로 교체할 수 있어야 한다.

LSP 는 OCP 를 받쳐주는 다형성에 관한 원칙을 제공한다.

  • 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.

리스코프 치환 원칙을 지키지 않으면 기능을 확장하기 어렵게 된다.

예를 들어 현대 자동차라는 클래스가 존재하고 현대 자동차를 상속받는 소나타와 그랜저, 아반떼 클래스가 존재한다.

소나타와 그랜저는 현대 자동차 클래스를 상속받기 때문에 현대 자동차가 기본으로 가지는 메서드와 속성값을 기본으로 가지기 때문에 LSP 를 만족한다. 

하지만, 아반떼라는 클래스가 소나타와 그랜저에 대해 LSP 를 만족하냐에 대해선 위반한다고 말할 수 있다.

즉, LSP 는 다형성에 관한 것이라고 할 수 있고, 추상화에 대해 생각할 수 있다.

728x90