• 里氏替换原则


    “所有引用基类的地方必须能透明地使用其子类的对象”

    “注意 在类中调用其他类时务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了LSP原则。”

    “在具体应用场景中就要考虑下面这个问题了:子类是否能够完整地实现父类的业务,否则就会出现像上面的拿枪杀敌人时却发现是把玩具枪的笑话。”

    注意 如果子类不能完整地实现父类的方法,或者父类的某些方法在子类中已经发生“畸变”,则建议断开父子继承关系,采用依赖、聚集、组合等关系代替继承。”

    “里氏替换原则可以正着用,但是不能反过来用。在子类出现的地方,父类未必就可以胜任。”

    子类可以赋值给父类,但是父类不可以赋值给子类。

    如果参数是父类,那么可以放一个子类进去,如果参数是子类对象,那么不可以放父类对象进去。

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

    “子类中方法的前置条件必须与超类中被覆写的方法的前置条件相同或者更宽松。”

    覆写或实现父类的方法时输出结果可以被缩小”

    “在项目中,采用里氏替换原则时,尽量避免子类的“个性”,一旦子类有“个性”,这个子类和父类之间的关系就很难调和了,把子类当做父类使用,子类的“个性”被抹杀——委屈了点;把子类单独作为一个业务来使用,则会让代码间的耦合关系变得扑朔迷离——缺乏类替换的标准”

  • 相关阅读:
    final和abstract能否共同修饰一个类
    Java三大变量分别是类变量、实例变量和局部变量
    变量的就近原则
    成员变量和局部变量
    初始化集合对象,通过contains判断是否为null
    三目表达式运算符优先级分析
    京东物流POP入仓商品关联笔记
    京东POP入仓操作笔记
    闪购活动报名笔记
    excel常用的快捷键大全
  • 原文地址:https://www.cnblogs.com/lakeslove/p/12969688.html
Copyright © 2020-2023  润新知