| 提出 | Barbara Liskov(1987 主题演讲;1994 形式化论文) |
|---|---|
| 契约规则 | 前置条件不加强、后置条件不削弱、不变量保持 |
| 反例 | 正方形继承矩形:setWidth 语义被破坏 |
契约违背示例
契约违背示例
// 矩形:setWidth 后 setHeight 不受影响
// 正方形:setWidth 会同时改 height —— 调用方断言被破坏
Rect r = new Square();
r.setWidth(5); r.setHeight(4);
assert r.area() == 20; // Square 下不成立LSP 是行为子类型而非语法子类型:能编译通过不代表能安全替换。