里氏替换原则
?里氏替换原则1 继承的好与坏???? 1 好处
??????????????? 代码共享,减少创建类的工作量,提高代码的重用性,提高代码的扩展性
????? 2 坏处???????????????? 继承是侵入性的。降低了代码的灵活性,子类受到父类的约束。增强了耦合性,当修改父类时,要考虑子类的? 修改。
?
?
2? 怎么缩小继承所带来的弊端??????? 解决方案:里氏替换原则。
??????? 定义:多有引用基类的地方必须能透明地使用其子类的对象。(只要父类能出现的地方子类就可以出现,而且替换子类也不会产生任何错误和异常)
?
?
4 引申的四个规则???? 1 子类必须完全实现父类的方法???????????
?
?
???? 解决办法:
????
?
?????????? ?因为有这个规则,里氏替换原则不能反过来使用,在子类出现的地方,父类不一定可以胜任。有可能会出现ClassCastException。
?
?????3 覆盖或者实现父类的方法的时候输入的参数可以被放大?????????? 当子类的方法参数比父类的范围大的时候,如(子类方法参数是:Map,父类方法参数是:HashMap),这个时候构成了方法重载,而这样不会影响里氏替代原则。
?
??????4 覆盖或者实现父类的方法的时候返回结果可以缩小????????? 如(父类方法是:返回Map,子类返回HashMap),这样我们调用的时候,不会违背里LSP原则。通常这样会是方法的重写。
?总结????? 采用里氏替代原则可以增强程序的健壮性,版本升级的时候可以保持非常好的兼容性,即使增加子类,原有的子类也可以继续运行。