Liskov替换原则(LSP)指出,子类型的对象必须能够替代其基类型而不破坏程序的正确性。如果代码适用于Base,那么它必须适用于任何Subclass——相同的行为期望,没有意外。
经典违反:Square extends Rectangle
java
{
w, h;
{ .w = w; }
{ .h = h; }
{ w * h; }
}
{
{ .w = w; .h = w; }
{ .w = h; .h = h; }
}
{
r.setWidth();
r.setHeight();
r.area() == ;
}
