java的核心特性之一:继承,Java中的继承时单继承,子类继承了父类后就可以使用父类的属性和方法(私有属性和方法以外),子类需要重写父类的抽象方法,继承机制在一定程度上提高了代码的复用性,提高了代码的可拓展性,但也是有缺点
继承缺点
缺点一:继承时侵入性的,也就是说子类继承了父类就必须拥有父类所有的属性和方法
缺点二:灵活性降低,子类必须拥有父类的属性和方法,让子类多了些约束
缺点三:增强了耦合性,当父类的常量、变量和方法被修改时需要考虑子类的修改
里式替换作用
Java的单继承机制从总体上看是利大于弊,那么,如何让利的优势发挥最大,同时减少弊的带来的麻烦呢,于是就有了里式替换原则,里氏替换原则为良好的继承定义了一个规范
我们在做系统设计时,经常会定义一个接口或抽象类,然后编码实现,调用类则直接传入接口或抽象类,其实这里已经使用了里氏替换原则
举一个CS的案例:
枪的主要职责是射击,如何射击在各个具体的子类中定义,手枪是
单发射程比较近,步枪威力大射程远,机枪用于扫射。在士兵类中定义
了一个方法killEnemy,使用枪来杀敌人,具体使用什么枪来杀敌人,调
用的时候才知道,AbstractGun类的源程序如代码清单如下图所示。
写了个办成品,待续............
注意 在类中调用其他类时务必要使用父类或接口,如果不能使
用父类或接口,则说明类的设计已经违背了LSP原则
本文内容参考设计模式之禅,仅用于个人学习,如有不妥请联系删除
评论区