很多朋友对重写有点误解,认为重写是访问修饰符比被重写的方法大,而返回值类型必须一致,方法签名一样;

其实并不是这样的。

首先,我们先说说,重写的前提?

在子父类中(也可以在接口和实现类中),子类(实现类) 重写父类的方法。

那,什么是重写呢?

当子类跟父类拥有相同的功能,但是实现方式不同时,子类重写父类的方法即可,

举例:动物类拥有eat()方法,猫类是动物类的子类,猫也有吃的方法 ,猫拥有吃的功能跟动物拥有吃的功能是一样的,所以没必要写一个eat2之类的

直接重写父类的eat方法即可;

那么,为什么要重写呢?

1.父类已经有这个功能的方法了,子类假如有相同功能的方法,使用重写的方式更加便利,不会造成子类既继承得到了父类的这个功能,又自己拥有一个同样的功能而方法名却不一样的尴尬境地

2.继承是多态的前提,重写方法也是为了多态的扩展性的。

最后,如何 重写父类的方法呢?

重写方法得满足一大两小两同,所谓的一大两小两同是:

一大:访问修饰符比(被重写的)父类的大(或一样)

两小返回值类型(引用数据类型 父子关系的大小)要小于等于父类的返回值类型、、声明异常 比(被重写的)父类的小(或一样)

两同:方法名和参数列表(方法签名)必须相同

访问修饰符的大小,从小到大为:private<默认的<protected<public,也就是假如父类的方法是默认的修饰,那么子类重写的只能是默认的或protected或public,不能是private

而这里 返回值类型 的大小指的是  父子类的大小,父类比子类大,什么意思?

class A{}class B extends A{}

B是A的子类,A是Object的子类,

如果其他的子父类(当然,你在A,B类中也行),再举例:

class Father{   public A method(){}   }

class Son extends Father{ //重写父类的方法   public  ? method() }

Son类中重写Father的方法,Father的返回值为A,那么Son类的返回值类型,只能是A或A的子类,不能是Object

也就是?只能是A  或 B,不能是Object

声明异常的小指的跟返回值类型的小是一样的,比如父类声明了 一个父类异常IOException  那么子类声明的异常只能是IOException或其子类,不能是IOException的父类;

并且子类的声明异常要被父类声明的异常包含,什么意思呢?比如父类声明了多个异常,子类只能声明父类声明的异常被包含的范围内,

比如,父类声明了A,B,C异常,子类只能最多声明A,B,C当然,子类只声明A也是可以的

但是这里有点小特殊的地方:比如父类声明了A异常,子类重写的方法声明多个A异常的子类,是可以的。(其实意思就是子类重写的方法声明的异常是父类声明的异常被包含的范围内)

最后,方法名和参数列表必须一致

方法重写的 两同 两小 一大相关推荐

  1. Java中方法签名signature、方法重载以及“两同两小一大”的方法覆盖(方法重写)总结

    1. 方法 1.1 方法 实现了某一功能,代码可以复用 1.2 方法签名 java中每个方法都有一个签名,包含方法名和参数列表(类型.个数以及顺序),只要其中一个不同,方法的签名不同,也就是属于不同的 ...

  2. 方法重写的一大两小两同

    很多朋友对重写有点误解,认为重写是访问修饰符比被重写的方法大,而返回值类型必须一致,方法签名一样: 其实并不是这样的. 首先,我们先说说,重写的前提? 在子父类中(也可以在接口和实现类中),子类(实现 ...

  3. [css] 如何重写行内样式?方法有哪些(至少两种)?

    [css] 如何重写行内样式?方法有哪些(至少两种)? 1, !important 最高级 2, var divStyle = document.querySelector('#div').style ...

  4. 万两手机阅读小助手的下载安装及一键签到多个app的方法。

    大家好,今天给大家分享一下市面上使用者比较多的 万两手机阅读小助手 的安装 这里介绍的是阅读小助手 1.3.4 版本的安装方法. 像普通app一样,下载好apk后直接安装即可.安装好的图片如下: 安装 ...

  5. 手把手教我班小姐姐学java之方法重写与方法重载

    方法重写 子类从父类中继承方法.有事,子类需要修改父类中定义的方法的实现,这就是方法重写. 重写的好处在于子类可以根据需要,定义特定于自己的行为. 在面向对象原则里,重写意味着可以重写任何现有方法.实 ...

  6. 两个必备小本领——恢复设备出厂配置、如何配置web方式登陆交换机

    转载来源 :两个必备小本领--恢复设备出厂配置.如何配置web方式登陆交换机 :https://mp.weixin.qq.com/s/35EOLUODM8G15C-xXVcVCw 恢复设备出厂配置 1 ...

  7. PDF转图片怎么转?分享两种转换小技巧

    如何将PDF文件内容转换成图片呢?PDF文件在办公过程中十分常见,很多时候我们为了能更加方便的使用文件中的内容,会需要把PDF转换成图片来保存使用,因为图片格式的文件更加容易阅读和携带.很多小伙伴不知 ...

  8. 怎么把PDF转换成CAD文件呢?分享两种转换小技巧

    PDF文件怎么把它转换成CAD文件呢?做CAD设计的小伙伴是不是经常会收到甲方发来的PDF格式的CAD文件?他们会觉得PDF格式好发送,容易打开,但我们作为专业编辑.绘制CAD图纸人员,是要对文件进行 ...

  9. 一个表对应另一个表中多个主键的查询方法(把一个表当成两个表用)

    表t_Record PID(主键)   SendUserID(发送人)   ReceiveUserID(接收人)    1              1                      2 ...

最新文章

  1. RDKit | 删除方差低的描述符
  2. Windows PE 第十三章 PE补丁技术
  3. 关于vs2010编译程序一闪就没的解决办法
  4. JSP手机商城系统设计网站
  5. Android Srt和Ass字幕解析器
  6. Eterm连接不上-10001:登录失败
  7. 创新Sound Blaster Tactic3D Alpha耳机驱动v1.0官方版
  8. 影响应用商城搜索排名的因素
  9. VsCode使用及常用命令汇总(Win10)
  10. 【模板】字符串快速读入的函数
  11. 苹果m1可以虚拟服务器,苹果M1芯片可以运行ARM版win10 但需要利用虚拟机
  12. python三级考什么_什么是计算机三级考试?计算机三级考什么?
  13. 经验解答:计算机专业是什么?这个专业的大学生以后能干嘛?
  14. Windows系统封装(三)安装软件和系统优化清理。
  15. 如何用计算机编程算题,计算机二级Web程序设计章节练习题
  16. 十年磨一剑,云原生分布式数据库PolarDB-X的核心技术演化
  17. [个人笔记][遗传算法] 遗传算法的python实现
  18. php ssl tls_SSL/TLS多种证书类型的转换
  19. C#获取本机IP地址的4种方式
  20. 【Mac 软件推荐】控制外接显示器的亮度和声音-MonitorControl

热门文章

  1. 逆向分析:还原 App protobuf 协议加密
  2. 【ZYNQ开发系列】基于vitis(vivado2019以上版本)的程序固化~如何把程序烧录到QSPI?
  3. 计算机内存类型包括什么,计算机内存类型是什么
  4. 8Manage:采购谈判的6个成功策略
  5. python strip什么意思_python中strip什么意思
  6. Unity客户端开发面试题记录
  7. c语言合法浮点数,c语言中什么是浮点数
  8. 清华 计算机系 赵晟,来看看2010年清华大学自动化系录取名单本科毕业学校
  9. 电源滤波为何通常是一大一小两个电容并联?
  10. vFlat Scan – 可能是最快捷的纸质书扫描应用,一次 2页,居然还能移除手指头[iOS/Android]