当前位置:网站首页>重载与重写的区别
重载与重写的区别
2022-08-08 06:27:00 【小田同学卷代码】
1.重载:
(1)在一个类中,允许存在多个同名的方法,只要他们的形参列表不同即可(形参的个数、类型、顺序)。
(2)注意:同一个类、方法名相同、形参列表不同(形参的个数、类型、顺序),与权限修饰符、返回值类型、形参名和方法体无关。
(3)一个类的多个构造器之间构成重载。
(4)重载不表现出多态性。(静态绑定、早绑定) 在方法调用前(编译期)编译器可以明确的知道所调用的具体的方法(方法名、形参列表)。
2.重写:
(1)子类继承父类之后,就获取到了父类中声明的所有属性和方法,可以对继承到的父类中的方法进行覆盖操作,
子类在实例化对象后调用的方法就是重写后的方法。
(2)注意:2.1子类重写的方法和父类被重写的方法,方法名和形参列表必须相同。
2.2权限修饰符:子类重写的方法的权限修饰符不能小于父类被重写方法的权限修饰 符。
特别地:父类中声明为private的方法子类不能重写。
2.3返回值类型:父类被重写方法的返回值类型为void,子类重写的方法的返回值类型只能为void。
父类被重写方法的返回值类型为基本数据类型,子类重写的方法的返回值类型只能为对应的基本数据类型。
父类被重写方法的返回值类型为某个类,子类重写的方法的返回值类型可以是该类或该类的子类。
2.4 子类重写方法抛出的异常不能大于父类被重写方法抛出的异常。
2.5 父类和子类中同名同参的方法要么都声明为非static修饰的(考虑方法重写),
要么都声明为static修饰的(不考虑方法重写)
(3)子类不能重写父类的构造器。
(4)重写表现出多态性。(动态绑定、晚绑定)引入对象的多态性以后,把子类对象赋值给父类的引用,在内存中实际已经加载了子类特有的属性和方法,只是因为变量声明的是父类的类型,
导致在编译期,编译器只能调用父类中声明的方法(虚拟方法调用),直到在运行期,JVM虚拟机上的解释运行器在调用方法的那一刻起,才明确的实际创建的子类对象,
进而父类的引用根据赋值给他的具体的子类对象,动态的调用属于该子类对象的同名同参的方法。
边栏推荐
猜你喜欢
实现字符串转换为整数(atoi)
Unity HDRP下VRTK传送、穿墙 时画面淡入淡出、视觉遮挡无法正确显示问题解决
ExecutionEngineException: String conversion error: Illegal byte sequence encounted in the input.
websocket结合消息队列完成多台服务器下的订单服务主动通知
Unity_预制体批量编辑器
Day39------网络相关
Unity HDRP中代码动态修改天空盒以及其他环境参数
[总结] Unity Lightmap使用总结
Unity 本地 IIS 服务搭建之文件夹权限配置
【图形学】13 UnityShader语义(一)
随机推荐
Lettcode linked list OJ question sharing and explanation
Unity3D objects up and down or so rotation (is not affected by axes object itself)
带头双向循环链表的增删查改
排列组合题目小结
[Unity] GPU动画实现(二)——网格合并
【图形学】10 UnityShader入门(二)
万级TPS亿级流水-中台账户系统架构设计
golang 服务大量 CLOSE_WAIT 故障排查
【Unity】unity中对象池的使用
C language judges the problem of big and small endian storage
关于Unity 按键事件响应错误触发UI事件的问题解决
网络安全笔记第一天day1
使用js写一个2048
受邀全球互联网技术大会分享
自动化测试------selenium
【爬虫】Web Scraper正则表达式
webAPI
Unity学习笔记 02 —— 更多API
关于在finally代码块中修改try代码块中基本数据类型返回值的问题
什么是类与对象?