LSP声明,类应可替代其基类,这意味着派生类和基类在语义上应等效。
但是LSP是否也适用于实现接口的类?换句话说,如果由类实现的接口方法在语义上与用户期望的不同,是否将其视为违反LSP?
7
是。完全相同的原因和结果与违反LSP(如果它是接口,抽象类,完整类)无关紧要。LSP旨在设定并满足期望,以使消费者能够以一般方式对待您的类型。
—
吉米·霍法
总的来说(我知道它们之间的区别,但是我在这里进行了概括),接口在某种程度上类似于纯抽象类(C ++术语),因此Liskov应该适用于接口和实现它们的类。
—
Jesse C. Slicer 2012年