目录

重载与重写有哪些区别

重载与重写的区别是:1、规则不同;2、定义不同;3、类的关系不同;4、多态不同;5、返回不同;6、参数不同;7、修饰不同。重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。一个词语如果有多重含义,那么就说该词语被重载了,具体代表什么含义需要结合具体的场景。

一、重载与重写的区别

1、规则不同

重载的规则是:

必须具有不同的参数列表;可以有不同的访问修饰符;可以抛出不同的异常。

重写方法的规则是:

参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载;返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载;访问修饰符的限制一定要大于被重写方法的访问修饰符;重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。

2、定义不同

重载是定义相同的方法名,参数不同;重写是子类重写父类的方法。

3、类的关系不同

重写是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。

4、多态不同

重载是编译时的多态性,重写是运行时的多态性

5、返回不同

重载对返回类型没有要求,而重写要求返回类型,有兼容的返回类型。

6、参数不同

重载的参数个数、参数类型、参数顺序可以不同,而重写父子方法参数必须相同。

7、修饰不同

重载对访问修饰没有特殊要求,重写访问修饰符的限制一定要大于被重写方法的访问修饰符。

延伸阅读:

二、什么是重载与重写

重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。

重写(override):也称为覆盖。重写是子类对父类非静态、非private修饰,非final修饰,非构造方法等的实现过程进行重新编写 , 返回值和形参都不能改变。即外壳不变,核心重写, 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

一个词语如果有多重含义,那么就说该词语被重载了,具体代表什么含义需要结合具体的场景。

以上就是关于重载与重写的区别的内容了,希望对大家有帮助。


一站式研发项目管理平台 PingCode

一站式研发项目管理平台 PingCode

支持敏捷\瀑布、知识库、迭代计划&跟踪、需求、缺陷、测试管理,同时满足非研发团队的流程规划、项目管理和在线办公需要。