利斯科夫的替代原则 - 如何模拟正方形和矩形

How*_*ard 5 java oop design-patterns

可能重复:
从矩形推导出方形违反Liskov的替代原则吗?

通过应用LSP,任何人都可以给我一个Square和Rectangle的实现吗?

我读过这本书 - "首先面向对象的分析和设计",他们说如果Sqaure继承自Rectangle,它违反了LSP但没有正确的实现.

有人想试试吗?

Lau*_*ves 12

如果使Square和Rectangle不可变,则不会违反LSP.

问题是如果您可以独立更改Rectangle的宽度和高度,而Square是一个Rectangle,那么您可以将Square更改为不是正方形.

  • 是的,继承点是派生类型应该*添加*功能,而不是违反任何超类的现有功能. (4认同)