LSP原则
含义:只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。但是,有子类出现的地方,父类未必就能适应。
*子类型可以增加方法,但不可删
* 子类必须完全实现父类的方法,在类中调用其他类时务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了里氏替换原则。
*子类型中重写的方法必须有相同或子类型的返回值
*子类型中重写的方法必须使用同样类型的参数
*子类型中重写的方法不能抛出额外的异常
同时,这也可以体现在方法的规约上面。
Same or stronger invariants 更强的不变量
Same or weaker preconditions 更弱的前置条件
Same or stronger postconditions 更强的后置条件
采用里氏替换原则的目的就是增强程序的健壮性,版本升级是也可以保持非常好的兼容性。即使增加子类,原有的子类还可以继续运行。在实际项目中,每个子类对应不同的业务含义,使用父类作为参数,传递不同的子类完成不同的业务逻辑。