자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있어야 한다.
자식 클래스는 부모 클래스의 기능을 대체하거나 확장할 수 있어야 한다. (상속 , is-a 관계)
리스코프 치환 원칙은 상속에 관한 원칙으로 객체지향에서의 서브타입과 슈퍼타입에 대한 개념으로 생각할 수 있다. 서브타입은 자식클래스로, 슈퍼 타입은 부모 클래스로 생각하면 서브 타입은 특수화 타입이고 슈퍼 타입은 일반화된 타입이므로 서브 타입인 자식클래스가 슈퍼 타입인 부모 클래스에 순응을 한다고 할 수 있다
이때 순응이란 서브타입이 슈퍼타입의 구조화 행위를 따라하는 것이다
- 하위형식에서선행조건을 더할 수 없음
- 자식 클래스에서 부모 클래스에 있는 기능에 추가적인 조건을 덧붙일 수 없다
- 하위형식에서 후행조건을 약화실킬 수 없음
- 부모 클래스에서 기능의 실행 순서를 자식 클래스에서 바꾸거나 하지 않을 수 없다
- 슈퍼형식의 불변자는 하위 형식에서도 보존
다른 원칙과의 관계
- SRP: 클래스가 단일 책임을 가지면, 서브 클래스도 그 책임을 일관되게 유지하여 LSP를 지키기 쉽습니다.
- OCP: LSP를 준수하면 서브 클래스가 기반 클래스를 대체할 수 있으므로, 기존 클래스를 수정하지 않고도 확장이 가능해져 OCP를 만족하게 됩니다.
- ISP: 인터페이스가 잘 분리되어 있으면, 서브 클래스가 특정 인터페이스를 구현할 때 LSP를 지키기 쉽습니다.
- DIP: DIP를 지키면 추상화에 의존하므로, 서브 클래스가 기반 클래스를 대체하기 쉽게 되어 LSP를 만족할 수 있습니다.
'OOP' 카테고리의 다른 글
[OOP] 객체지향의 원칙 SOLID - 의존성 역전 원칙 (DIP) (0) | 2024.06.23 |
---|---|
[OOP] 객체지향의 원칙 SOLID - 인터페이스 분리 원칙 (ISP) (0) | 2024.06.23 |
[OOP] 객체지향의 원칙 SOLID - 개방 폐쇄 원칙 (OCP) (0) | 2024.06.21 |
[OOP] 객체지향의 원칙 SOLID - 단일 책임 원칙 (SRP) (0) | 2024.06.21 |