首先从概念上,

重载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的区别相关推荐

  1. 类的 三大特性 封装,继承,多态 overload与override的区别

    OOP三大特性:封装,继承,多态 封装的目的:为了让类更安全 封装的做法: 1.类里面的成员变量做为private 2.使用成员方法来间接访问成员变量 3.在该方法里面加限制条件 php类里面不允许出 ...

  2. Overload和Override的区别说明

    下文笔者讲述Overload和Override的区别简介说明,如下所示: Overload:重载Override:覆盖(重写)------------------------------------- ...

  3. Overload和Override的区别。

    Overload和Override的区别. Overloaded的方法是否可以改变返回值的类型? Overload是重载的意思,Override是覆盖的意思,也就是重写. 重载Overload表示同一 ...

  4. Overload 和Override 的区别。Overloaded 的方法是否可以改变返回值

    Overload 和Override 的区别.Overloaded 的方法是否可以改变返回值的类型? Overload 是重载的意思,Override 是覆盖的意思,也就是重写. 重载Overload ...

  5. Java中,overload与override的区别

    Java的overload(重载)与override(重写,覆盖)的区别 一,overload(重载) 1,overload(重载)表示同一个类中可以有多个名称相同的方法,但是这些方法的参数列表各不相 ...

  6. java中overload与override的区别

    1.综述  重写(Override)也称覆盖,它是父类与子类之间多态性的一种表现,而重载(Overload)是一个类中多态性的一种表现. override从字面就可以知道,它是覆盖了一个方法并且对其重 ...

  7. overload和override的区别

    override(重写) 1.方法名.参数.返回值相同. 2.子类方法不能缩小父类方法的访问权限. 3.子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常). 4.存在于父类和子类之间. ...

  8. Overload 和Override 的区别

    Overload 是重载的意思,Override 是覆盖的意思,也就是重写. 重载 Overload 表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数 个数或类型不同). ...

  9. Java学习-Overload和Override的区别

    1.Overload是重载的意思,Override是覆盖的意思,也就是重写. 2.重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同). 3 ...

最新文章

  1. ORB_SLAM2局部建图线程
  2. 关于VMware虚拟机的复制注意事项
  3. CVPR 2021 底层视觉最新进展分享
  4. 返回的图片 buffer 怎么接收_面试题:Kafka 会不会丢消息?怎么处理的?
  5. 多线程访问共同的代码或者对象:lock避免出错
  6. 网易邮箱显示服务器返回错误,企业退信的常见问题?
  7. 算法题目打卡:Ques20201024
  8. 最近邻搜索算法flann Marius Muja and David G. Lowe
  9. 基于Apriori算法的高职大学生就业能力的研究
  10. 银河麒麟v10_银河麒麟:V10究竟哪里好?开箱测评,瞬间明了!
  11. 快手用计算机弹奏,【图片】【CJ他家】弹计算器视频传送门、计算器谱等随时更新!_计算器音乐吧_百度贴吧...
  12. OpenCV-图像翻转函数cv::filp
  13. 青少年python一级考试试题,青少年python一级考试
  14. lambda in查询方式
  15. java打印日期序列_Java8新特性之新日期API
  16. Xcode创建的工程使用xcodebuild命令行编译
  17. 项目管理全过程最佳实践(下)
  18. 微信小程序一个简单聊天室
  19. [go学习笔记.第十六章.TCP编程] 3.项目-海量用户即时通讯系统-redis介入,用户登录,注册
  20. opencv简单方式红绿灯状态识别

热门文章

  1. node 跨域请求设置
  2. sqlsourcesafe mysql_mysql权限问题,看不到其它的库!
  3. python tuple list_草根学Python(三)List 和 Tuple
  4. HTML学习04之内联框架和表单
  5. mongodb学习篇
  6. CNN 中1X1卷积核的作用
  7. faster rcnn可视化(修改demo.py保存网络中间结果)
  8. TCP通讯处理粘包详解
  9. JavaScript数组方法大全(推荐)
  10. Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.