里式替换原则

本文详细阐述了里式替换原则的定义与应用约束,强调了继承关系中子类如何正确地扩展并遵守父类的契约,确保软件设计的稳定性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义

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

使用约束

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

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

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

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

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

愿大家共勉。

转载于:https://my.oschina.net/liufq/blog/1799960

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值