前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >里式替换原则

里式替换原则

作者头像
Dylan Liu
发布2019-07-01 12:39:47
6010
发布2019-07-01 12:39:47
举报
文章被收录于专栏:dylanliudylanliu

定义

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

使用约束

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

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

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

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

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

愿大家共勉。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用约束
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档