java设计模式-里氏代换原则

19 阅读2分钟

里氏代换原则

里氏代换原则是面向对象设计中的基本原则之一,它的原则是任何基类可以出现的地方,那么子类一定可以出现。
通俗点说就是:子类是可以扩展父类的功能,但是不能改变父类原有的功能 ,其实就是和开闭原则有着相似的地方,开闭原则只允许增加扩展功能,而不能对功能进行修改。

这里的就是说java中是有父子类的关系,子类中所有的公共功能可以抽取到父类当中,从而提高代码的复用性,而在子类 中只需提供子类特有 的 功能 即可。

这里就有一个有要求,就是子类中尽量避免去重写父类中的方法。因为当通过重写父类中的方法来完成新的功能,虽然当我们这样写的时候看似很简单,只需要重写一下父类中的方法就可以了,但是这样的 做法 对系统中整个继承体系的可复用性造成一定的影响,使得可复用性较差。

为什么要避免重写父类中的方法

因为我们在 父类 中已经声明了这个方法,在子类中又去重写这个方法,那么在父类中声明的这个方法也就没有意义了。
如果我们子类中必须要重写父类中的某种方法,那么我们在父类中定义该方法为抽象的方法就可以了,然后每个子类去实现这个抽象的方法,达到重写父类中方法的目的。

但是这里又会出现一个 问题,如果 我们在项目中 多态使用的很多的时候,我们程序中出现 bug 的几率也更大。

所以应该遵守里氏代换原则的话就不能去重写父类中的非抽象方法。