对于重写的原则,很多人总是巴拉巴拉一大堆两同两小一大,记不住不说,还不明白为啥,搞得花里胡哨。
其实万事万物的结果自然有其原理,JAVA作为一门编程语言,其更是有严格的语言规范和简洁性要求。
那为啥重写看起来好特么花里胡哨啊,其实说到底就是一个话,重写的定义+里式替换原则。
重写的定义:
- 父子之间
- 同一个方法
里式替换原则:
- 子类能顶替父类的位置而不会出任何问题
- 反之不行
由这两条我们再来看下所谓的两同两小和一大
两同说的是方法名相同,参数类型相同,其实说白了就是说两个方法相同的基本定义。
两小一大是子类的异常小于父类,子类的返回值类型小于父类,子类访问权限大于父类,其核心你就会发现是从里式推出来的。
异常:
如果子类的异常大于父类,就可能会出现捕获的问题,我try-catch的是一个I/O错误,你却抛出来一个文件类型错误,这样就GAME OVER了。
返回值:
返回值其实道理是一样的,我要的是一个String类型,,如果子类进行了类型扩充到Object,你给我传了一个char类型,同样没得玩了。
访问权限:
对于访问权限则相反了,因为如果父类是public,大家开开心心的访问,突然有点子类顶上去,大家突然发现他家不开门了,是private,那问题就大了,大家都没法工作了。