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