# 里氏替换原则

> 子类必须能够替换掉它们的基类，而不会导致程序出错。

- ID: m01254
- 分类: system
- 领域: 系统论

## 定义

子类必须能够替换掉它们的基类，而不会导致程序出错。即子类不能改变基类的行为约定。脚手架作用：保持契约的一致性。如果你承诺了一个服务（基类），你的升级版（子类）必须完全兼容旧版的功能，不能偷偷阉割或改变行为，否则会破坏用户的信任（系统崩溃）。

## 机制

里氏替换原则要求子类（子类型）能无缝替换其基类而不破坏程序正确性，即行为契约须与基类兼容。

## 练习

设计继承时确保子类不强化前置条件、不弱化后置条件。用它审查「正方形继承矩形」类反例。重构中以组合替代违例继承。

## 脚手架用法

保持契约的一致性。如果你承诺了一个服务（基类），你的升级版（子类）必须完全兼容旧版的功能，不能偷偷阉割或改变行为，否则会破坏用户的信任（系统崩溃）。

[阅读网页](https://thinkingmodels.site/entries/detail/m01254)
