开发者社区 问答 正文

为什么“正方形不是矩形”“鸵鸟不是鸟”是违反LSP原则的例子?

为什么“正方形不是矩形”“鸵鸟不是鸟”是违反LSP原则的例子?

展开
收起
冲冲冲c 2024-08-26 16:12:55 69 分享 版权
1 条回答
写回答
取消 提交回答
  • 在“正方形不是矩形”的例子中,正方形类Square继承自矩形类Rectangle,并重写了setWidth和setHeight方法。但在某些情况下(如reSize函数),将Rectangle对象替换为Square对象会导致逻辑错误(如死循环),因为Square的行为与Rectangle的预期不符,违反了LSP原则。在“鸵鸟不是鸟”的例子中,鸵鸟类Ostrich继承自鸟类Bird,但Bird类定义了一个飞行速度的属性,而鸵鸟不能飞行。在crossRiver函数中,当将Bird对象替换为Ostrich对象时,由于Ostrich的飞行速度为0,导致除0异常,违反了LSP原则。这表明鸟类的抽象设计不合理,飞行速度不应是鸟类统一的属性。

    2024-08-26 20:05:34
    赞同 5 展开评论
问答地址: