里氏替换原则

 里氏替换原则

1 继承的好与坏

     1 好处

                代码共享,减少创建类的工作量,提高代码的重用性,提高代码的扩展性

      2 坏处

                 继承是侵入性的。降低了代码的灵活性,子类受到父类的约束。增强了耦合性,当修改父类时,要考虑子类的  修改。

 

2  怎么缩小继承所带来的弊端

        解决方案:里氏替换原则。

        定义:多有引用基类的地方必须能透明地使用其子类的对象。(只要父类能出现的地方子类就可以出现,而且替换子类也不会产生任何错误和异常)

4 引申的四个规则

     1 子类必须完全实现父类的方法

           

     解决办法:

    

 

     2 子类可以有自己的个性

            因为有这个规则,里氏替换原则不能反过来使用,在子类出现的地方,父类不一定可以胜任。有可能会出现ClassCastException。

     3 覆盖或者实现父类的方法的时候输入的参数可以被放大

           当子类的方法参数比父类的范围大的时候,如(子类方法参数是:Map,父类方法参数是:HashMap),这个时候构成了方法重载,而这样不会影响里氏替代原则。

      4 覆盖或者实现父类的方法的时候返回结果可以缩小

          如(父类方法是:返回Map,子类返回HashMap),这样我们调用的时候,不会违背里LSP原则。通常这样会是方法的重写。

 总结

      采用里氏替代原则可以增强程序的健壮性,版本升级的时候可以保持非常好的兼容性,即使增加子类,原有的子类也可以继续运行。

猜你喜欢

转载自lg5414.iteye.com/blog/1110309