리히터 대체 원칙
< /p>
객체 지향 프로그래밍에서 리스코 대체 원칙 (Liskov Substitution principle) 은 하위 유형에 대한 특별한 정의입니다. 바바라 리스코프 (Barbara Liskov) 가 1987 년 한 회의에서' 데이터의 추상과 계층' 이라는 연설에서 먼저 제기했다. < /p>
리씨 교체 원칙: 기본 클래스가 나타날 수 있는 모든 곳에서 하위 클래스가 나타날 수 있습니다. 통속적인 이해: 하위 클래스는 상위 클래스의 기능을 확장할 수 있지만 상위 클래스의 원래 기능은 변경할 수 없습니다. 즉, 하위 클래스가 상위 클래스를 상속하는 경우 새 메서드를 추가하여 새 기능을 완료하는 것 외에 상위 클래스의 메서드를 다시 작성하지 않도록 합니다. < /p>
상위 클래스의 메서드를 다시 작성하여 새로운 기능을 수행하는 경우 쉽게 쓸 수 있지만 전체 상속 시스템의 재사용성이 떨어집니다. 특히 다형성을 자주 사용하는 경우 프로그램 실행 오류가 발생할 가능성이 매우 높습니다. < /p>
샘플 정사각형은 직사각형이 아닙니다. 수학 분야에서 정사각형은 의심할 여지 없이 직사각형이다. 그것은 가로세로가 같은 직사각형이다. 따라서 우리가 개발한 형상 관련 소프트웨어 시스템은 정사각형을 직사각형에서 자연스럽게 상속할 수 있습니다. < /p>
이점 < /p>
(1) 하위 클래스는 상위 클래스의 추상 메서드를 구현할 수 있지만 상위 클래스의 비추상 메서드를 덮어쓸 수는 없습니다. < /p>
(2) 하위 클래스는 고유한 방법을 추가할 수 있습니다. < /p>
(3) 하위 클래스의 메서드가 상위 클래스의 메서드를 다시 로드하는 경우 메서드의 선행 조건 (즉, 메서드의 입력/입력 인수) 이 상위 클래스 메서드의 입력 매개 변수보다 더 느슨합니다. < /p>
(4) 하위 클래스의 메서드가 상위 클래스의 메서드 (다시 쓰기/다시 로드 또는 추상 메서드 구현) 를 구현하는 경우 메서드의 후위 조건 (즉, 메서드의 출력/반환 값) 이 상위 클래스보다 더 엄격하거나 상위 클래스와 같습니다. < /p >