Override和Overload的含义与区别

Overload

顾名思义,就是Over(重新)——load(加载),所以中文名称是重载。它可以表现类的多态性,可以是函数里面可以有相同的函数名但是参数名、类型不能相同;或者说可以改变参数、类型但是函数名字依然不变。

重载需要注意以下几点:
1.重载是通过不同的方法参数来区分的。
2.不能通过方法的访问权限、返回值和异常类型来进行重载。
3.对于继承来说,如果基类方法的访问权限是private,就不能在派生类中对其进行重载。如果派生类中也定义了一个同名的函数,这只是一个新的方法,不会达到重载的效果。

Override

就是ride(重写)的意思,在子类继承父类的时候子类中可以定义某方法与其父类有相同的名称和参数,当子类在调用这一函数时自动调用子类的方法,而父类相当于被覆盖(重写)了。

重写需要注意一下几点:
1.派生类中的覆盖方法必须和基类中被覆盖的方法有相同的的函数名和参数。
2.派生类中的覆盖方法的返回值必须和基类中被覆盖的方法的返回值相同。
3.派生类中的覆盖方法所抛出的异常必须和基类中被覆盖的方法所抛出的异常一致。
4.基类中被覆盖的方法不能是private,否则子类只是定义一个方法,并没有对其覆盖。


方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

区别

  • 覆盖是子类和父类之间的关系,是垂直关系。重载是同一个类中的方法之间的关系,是水平关系。
  • 覆盖只能由一个方法或只能由一对方法产生关系。重载是多个方法之间的关系。
  • 覆盖要求 参数列表相同。重载要求参数列表不同。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,231评论 0 62
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,960评论 18 399
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 1,261评论 0 5
  • 一.C++中的重写、重载、重定义 1.重载(overload) 概念 同一个类中的函数具有相同的名称,但是参数的列...
    Geeks_Liu阅读 6,871评论 0 3
  • 工作日志 所收任务 准备分享 演讲内容安排 PPT准备 完成情况 完成内容安排 40% PPT内容与设计 存在问题...
    钱佳辰_Hangzhou阅读 120评论 0 0

友情链接更多精彩内容