定义
里氏替换原则(Liskov Substitution Principle, LSP)是 SOLID 原则之一,它指出:子类型必须能够替换它们的基类型。换句话说,在使用基类的地方应当可以透明地使用派生类的对象而不会影响程序的正确性。
违反里氏替换原则的一个典型反例是正方形(Square)和矩形(Rectangle)的关系。在几何学中,正方形是一种特殊的矩形,其中所有边等长。然而,如果我们在面向对象编程中直接继承关系来实现这一点,可能会违反 LSP。
反例
class Rectangle {
protected int width = 0;
protected int height = 0;
public void setWidth(int width) {
this.width = width;
}
public void setHeight(int height) {
this.height = height;
}
public int getArea() {
return width * height;
}
}
class Square extends Rectangle {
@Override
public void setWidth(int width) {
super.setWidth(width);
super.setHeight(width); // 违背了 LSP,因为正方形的宽高需要同步设置
}
@Override
public void setHeight(int height) {
super.setWidth(height); // 同样违背了 LSP
super.setHeight(height);
}
}
问题
如果我们试图使用&nbs
软件设计里氏替换原则解析

最低0.47元/天 解锁文章
3280

被折叠的 条评论
为什么被折叠?



