什么是重载or重写,二者的区别是?

举报
坚果派 发表于 2021/12/16 00:31:55 2021/12/16
【摘要】 目录 1.重写2.重载3.重载(Overload) 和重写(Override) 的区别? 1.重写 重写必须满足如下条件: (1)方法的返回值类型必须相同。 (2)方法的参数个数必须相...

1.重写

重写必须满足如下条件:
(1)方法的返回值类型必须相同。
(2)方法的参数个数必须相同。
(3)方法的参数对应的数据类型必须相同。
(4)子类方法不得降低父类同名方法的访问级别。
另外

  1. 被重写的方法发生在父类与子类之间
  2. 方法名。参数列表,返回值类型相同
  3. 重写的访问修饰符的权限一定要大于被重写的访问修饰符的权限
  4. 重写方法一定不能抛出 新的异常,或者比重写方法更宽泛的异常。
  5. 被final关键字修饰的方法不能被重写
  6. 构造方法不能被重写
  7. 子类的访问级别不能低于父类 的访问级别

2.重载

  1. 参数类型。顺序和个数至少有一个不同
  2. 重载发生在一个类中
  3. 不能重载只有返回值不同的方法名
  4. 构造方法可以重载

3.重载(Overload) 和重写(Override) 的区别?

  1. 方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。

  2. 重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。

  3. 重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

文章来源: jianguo.blog.csdn.net,作者:坚果前端の博客,版权归原作者所有,如需转载,请联系作者。

原文链接:jianguo.blog.csdn.net/article/details/106793291

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。