论重写和里式替换原则(LSP)

本文深入浅出地解析了JAVA中重写的基本原则,包括重写的定义与里式替换原则,并详细阐述了“两同两小一大”的概念及其实质。

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

对于重写的原则,很多人总是巴拉巴拉一大堆两同两小一大,记不住不说,还不明白为啥,搞得花里胡哨。

其实万事万物的结果自然有其原理,JAVA作为一门编程语言,其更是有严格的语言规范和简洁性要求。

那为啥重写看起来好特么花里胡哨啊,其实说到底就是一个话,重写的定义+里式替换原则

 

重写的定义:

  1. 父子之间
  2. 同一个方法

里式替换原则:

  1. 子类能顶替父类的位置而不会出任何问题
  2. 反之不行

由这两条我们再来看下所谓的两同两小和一大

两同说的是方法名相同,参数类型相同,其实说白了就是说两个方法相同的基本定义。

两小一大是子类的异常小于父类,子类的返回值类型小于父类,子类访问权限大于父类,其核心你就会发现是从里式推出来的。

异常:

如果子类的异常大于父类,就可能会出现捕获的问题,我try-catch的是一个I/O错误,你却抛出来一个文件类型错误,这样就GAME OVER了。

返回值:

返回值其实道理是一样的,我要的是一个String类型,,如果子类进行了类型扩充到Object,你给我传了一个char类型,同样没得玩了。

访问权限:

对于访问权限则相反了,因为如果父类是public,大家开开心心的访问,突然有点子类顶上去,大家突然发现他家不开门了,是private,那问题就大了,大家都没法工作了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值