昨天有说到单一职责原则是针对接口的思维拓展,有没看过的,可以看看!https://blog.csdn.net/newlifemain/article/details/100184642
今天我们来看看针对Java中继承的里氏替换原则(LSP);里氏替换原则是为良好的继承定义了一个规范。Java中使用extends关键字实现继承,java中的继承是单一继承的,一个子类继承一个父类;是不是忘了什么是Java中的继承了?你完了,走吧你.....,..
java中的继承就是告知你拥有父类的方法和属性,然后你就可以覆写父类的方法。
在日常开发中,什么时候该继承父类?什么时候该覆写父类的方法?什么时候该重载父类的方法?什么才是里氏替换原则的标准?继承、覆写、重载、标准....啥?我走吧!!!莫慌,给在下一个机会,我们好好说说吧!刚开始看到这个原则的时候,我已经在思考这些有的没的了,以前在开发中使用继承,不过就是提高一下代码复用。现在你跟我讲这个迷迷糊糊的里氏替换原则,我真听不下去了!!!放心,我们没啥代码看的,我们就是叨叨。在Java中继承就是子类跟父类的关系,一个子类继承一个父类,就像你的儿子就只有一位父亲,Java中的继承是单一继承的原则的。好了,继承的概念理解了吗?
什么时候该继承父类?这个有了解吗?
: 我的理解是在类中调用其他类时务必使用其他类的父类或接口,比如说我们现在要频繁的操作数据库。那么是不是每一次都要开关数据库,获得连接并进行增删该查方法的调用。这个时候为了方便起见,就把这个共同的操作写成一个父类,然后让子类去继承它,那么就不用在写相同的代码了,这样也减少了代码的冗余。
什么时候该覆写父类的方法?什么时候该重载父类的方法?
在里氏替换原则(LSP)中的解析是只要有父类能出现的地方,子类就可以出现,替换子类也不会产生任何错误或异常。通俗来说:一个程序如果使用的是一个父类的话, 那么一定适用于其子类, 而察觉不出父类对象和子类对象的区别。 也即是说,在程序里面, 把父类替换成它的子类, 程序的行为不会有变化, 简单地说, 子类型必须能够替换掉它们的父类型。
如果你非得问什么时候覆写?什么时候该重载?
如果你理解java中子类覆写父类,子类重载父类的规范,你还会如此问吗?
覆写:
1.父类方法名称功能不足,但必须使用这个方法名,所以必须采用覆写。
2.被子类覆写的方法不能够比父类更加严格的访问权限。开发中一般都使用public.
3.如果父类使用了private声明,那么对于子类是不可见的,此时子类并没有覆写父类方法,是子类自己的方法。
重载:
子类和父类方法名相同,参数类型或者顺序不同。
覆写与重载的区别 :
覆写是子类继承父类方法,实现覆写;
重载是在一个类中,多个方法名相同,但是参数不同。
里氏替换原则目的就是增强程序的健壮性,在项目开发中,采用里氏替换原则设计程序时,应该尽量避免设计子类拥有自己的方法和属性,应尽量把子类当父类使用。因为如果把子类单独作为一个业务来使用,则会让代码间的耦合关系变得扑朔迷离,缺乏类替换标准。