软件构造-LSP

        LSP即“Liskov替换原则”,它在实现类的复用性的过程中起着重要的作用。

1 LSP的具体实现

        (1) 子类型可以增加方法,但不可删。

        (2) 子类型需要实现抽象类型(接口、抽象类)中所有未实现的方法。

        (3) 子类型中重写的方法必须有相同或子类型的返回值(即协变)。

        (4) 子类型中重写的方法必须使用同样类型的参数(即逆变),但是在Java中此种情况目前按照重载overload处理。

        (5) 子类型中重写的方法不能抛出额外的异常(即协变)。

2 如何理解LSP

        我个人的理解方式是:在编写程序时,你用父类实现了该应用场景下的所有功能,这时候你在遵守LSP原则写一个该类的子类,之后用这个子类替换你前面编写好的程序中的父类,替换完成后程序还是能正常运行的,举个例子来说,如果你没有遵守LSP,在子类中重写方法的返回值不是协变的(假设原来是Car,现在你返回了个Bicycle),那么在后续的调用中很有可能会问题,Car有些方法在Bicycle中肯定是没有,如果你调用了这些没有的方法之后肯定会报错。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值