里式替换原则

原创
2018/04/23 20:34
阅读数 71

定义

派生类能够替换其基类对象被使用

使用约束

里式替换原则是对继承的要求。 有以下4层含义(从网上抄来的)

  • 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
  • 子类中可以增加自己特有的方法。
  • 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
  • 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

理解比死记要强。我们要深入理解继承,有人拿着这把大斧头四处砍来砍去,却不知道斧头拿在手里不仅仅是权力,更是一种保护的责任。

每个类都会有public方法,有些类会实现interface,供其他类使用,也就是处在一个服务的位置上。每个public方法都是自身所做出的一个承诺,只要你按照要求调用,就会提供正确的服务。子类在继承后,固然是获得了超类的带来的‘财富’,更重要的是要遵守超类做出的承诺,破坏了这个承诺实际上是没有资格继承超类的。

每个方法都会有先验条件-对调用方的要求,后验条件-自身做出的承诺,子类在继承后要严以律己,宽以待人,也就是说子类可以放宽先验条件,但对后验条件只能缩紧不能放宽。上面的返回值,抛出异常都是对这个要求的细化。平时工作中我们也要仔细设计类层次,谨防破坏承诺的事情发生,不然很容易就出现一堆if else,代码中隐藏的臭虫也会更多。

愿大家共勉。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部