LSP는 클래스가 기본 클래스를 대체 할 수 있어야하는데 파생 클래스와 기본 클래스는 의미 적으로 동일해야합니다.
그러나 LSP는 인터페이스를 구현하는 클래스에도 적용됩니까? 다시 말해서, 클래스에 의해 구현 된 인터페이스 메소드 가 사용자가 예상 한 것과 의미 적으로 다른 경우, 이것이 LSP의 위반으로 간주됩니까?
7
예. 인터페이스, 추상 클래스, 전체 클래스 인 경우 LSP를 위반하는 것과 정확히 동일한 이유와 결과는 중요하지 않습니다. LSP는 소비자가 귀하의 유형을 일반적인 방식으로 취급 할 수 있도록 기대치를 설정하고 충족시키는 것입니다.
—
Jimmy Hoffa
전반적으로 (차이를 알고 있지만 여기서 일반화하고 있습니다) 인터페이스는 순수한 추상 클래스 (C ++ 용어)와 다소 유사하므로 Liskov는 인터페이스와 인터페이스를 구현하는 클래스에 적용해야합니다.
—
Jesse C. Slicer