OverLoad与override的区别
首先从概念上,
重载Overload:表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。
覆盖Override:表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。
其次,一般的方法签名的格式如下,
方法签名:①访问权限+②返回值的类型+③方法名+④参数列表+⑤抛出的异常
具体的区别如下,
重载(overload)
发生场所:同一个类里,或者子类中
重载的两个方法之间的限制:
1.③方法名必须相同
2.④参数列表必须不同(参数的个数,类型,顺序)
3.①访问权限,②返回值的类型,⑤抛出的异常(类型,数目)都与重载无关
4.对于继承来说,如果某一方法在父类中是访问权限是private,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。
覆盖(override)
发生场所:对接口方法的实现,或者在继承中子类覆盖父类的方法
覆盖的两个方法之间的限制:
1.③方法名必须相同
2.④参数列表也必须相同(参数的个数,类型,顺序)
3.②返回值的类型必须相同
4.覆盖的方法所抛出的异常
比被覆盖方法的所抛出的异常更少,或者一致,或者是其子类
5.子类方法的访问权限只能比父类的更大,不能更小。
6.被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
针对上面的比较,为了更清晰一些,列出以下表格
发生场所 | ①访问权限 | ②返回值类型 | ③方法名 | ④参数列表 | ⑤抛出的异常 | |
重载(overload) |
同一个类里,或者子类中 |
与重载无关 ※1 |
与重载无关 |
必须相同 | 必须不同 |
与重载无关 |
覆盖(override) | 对接口方法的实现,或者在继承中子类覆盖父类的方法 |
只能比父类的更大,不能更小 ※2 |
必须相同 | 必须相同 | 必须相同 | 抛出的异常更少,或者一致,或者是其子类 |
※1:对于继承来说,如果某一方法在父类中是访问权限是private,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。
※2:被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖
参考URL:
http://blog.csdn.net/theo1016/archive/2011/01/13/6136055.aspx
转载于:https://blog.51cto.com/robert/591269
OverLoad与override的区别相关推荐
- 类的 三大特性 封装,继承,多态 overload与override的区别
OOP三大特性:封装,继承,多态 封装的目的:为了让类更安全 封装的做法: 1.类里面的成员变量做为private 2.使用成员方法来间接访问成员变量 3.在该方法里面加限制条件 php类里面不允许出 ...
- Overload和Override的区别说明
下文笔者讲述Overload和Override的区别简介说明,如下所示: Overload:重载Override:覆盖(重写)------------------------------------- ...
- Overload和Override的区别。
Overload和Override的区别. Overloaded的方法是否可以改变返回值的类型? Overload是重载的意思,Override是覆盖的意思,也就是重写. 重载Overload表示同一 ...
- Overload 和Override 的区别。Overloaded 的方法是否可以改变返回值
Overload 和Override 的区别.Overloaded 的方法是否可以改变返回值的类型? Overload 是重载的意思,Override 是覆盖的意思,也就是重写. 重载Overload ...
- Java中,overload与override的区别
Java的overload(重载)与override(重写,覆盖)的区别 一,overload(重载) 1,overload(重载)表示同一个类中可以有多个名称相同的方法,但是这些方法的参数列表各不相 ...
- java中overload与override的区别
1.综述 重写(Override)也称覆盖,它是父类与子类之间多态性的一种表现,而重载(Overload)是一个类中多态性的一种表现. override从字面就可以知道,它是覆盖了一个方法并且对其重 ...
- overload和override的区别
override(重写) 1.方法名.参数.返回值相同. 2.子类方法不能缩小父类方法的访问权限. 3.子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常). 4.存在于父类和子类之间. ...
- Overload 和Override 的区别
Overload 是重载的意思,Override 是覆盖的意思,也就是重写. 重载 Overload 表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数 个数或类型不同). ...
- Java学习-Overload和Override的区别
1.Overload是重载的意思,Override是覆盖的意思,也就是重写. 2.重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同). 3 ...
最新文章
- ORB_SLAM2局部建图线程
- 关于VMware虚拟机的复制注意事项
- CVPR 2021 底层视觉最新进展分享
- 返回的图片 buffer 怎么接收_面试题:Kafka 会不会丢消息?怎么处理的?
- 多线程访问共同的代码或者对象:lock避免出错
- 网易邮箱显示服务器返回错误,企业退信的常见问题?
- 算法题目打卡:Ques20201024
- 最近邻搜索算法flann Marius Muja and David G. Lowe
- 基于Apriori算法的高职大学生就业能力的研究
- 银河麒麟v10_银河麒麟:V10究竟哪里好?开箱测评,瞬间明了!
- 快手用计算机弹奏,【图片】【CJ他家】弹计算器视频传送门、计算器谱等随时更新!_计算器音乐吧_百度贴吧...
- OpenCV-图像翻转函数cv::filp
- 青少年python一级考试试题,青少年python一级考试
- lambda in查询方式
- java打印日期序列_Java8新特性之新日期API
- Xcode创建的工程使用xcodebuild命令行编译
- 项目管理全过程最佳实践(下)
- 微信小程序一个简单聊天室
- [go学习笔记.第十六章.TCP编程] 3.项目-海量用户即时通讯系统-redis介入,用户登录,注册
- opencv简单方式红绿灯状态识别
热门文章
- node 跨域请求设置
- sqlsourcesafe mysql_mysql权限问题,看不到其它的库!
- python tuple list_草根学Python(三)List 和 Tuple
- HTML学习04之内联框架和表单
- mongodb学习篇
- CNN 中1X1卷积核的作用
- faster rcnn可视化(修改demo.py保存网络中间结果)
- TCP通讯处理粘包详解
- JavaScript数组方法大全(推荐)
- Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.