在Java里方法重写和方法重载有何区别_Java方法覆盖机制解析-java教程

方法重写与重载本质不同:重写是子类覆盖父类同签名方法,需满足“两同两小一大”,发生在继承关系中;重载是同一类中同名异参的方法,仅参数列表不同。

方法重写(Override)和方法重载(Overload)根本不是一回事:前者是子类改父类的行为,发生在继承链上;后者是同一类里用同一个名字干不同的事,靠参数列表区分。

怎么判断是重写还是重载?看方法签名和所在位置

重写必须满足「两同两小一大」:方法名相同、参数列表完全相同;返回值类型≤父类(协变允许)、抛出异常≤父类;访问权限≥父类。它只可能出现在子类中,且父类方法不能是 private、final 或 static。

重载只要求「同名不同参」:同一类中,方法名一样,但参数个数、类型或顺序(类型不同时)至少有一项不同。返回值、访问修饰符、throws、是否 static 全都不影响重载判定。

  • 常见错误:把 public void print(String s) 和 private void print(String s) 当成重载——错,这是非法重复声明,编译直接报 Duplicate method print(String) in type XXX
  • 另一个坑:写 void show(int a, String b) 和 void show(String b, int a) 确实构成重载;但 void show(int x, int y) 和 void show(int y, int x) 不构成——参数类型顺序没变,只是变量名换了,JVM 视为同一签名

@Override 注解只对重写有效,对重载加了也没用还可能误导

@Override 是给编译器的明确信号:“我打算重写父类方法”。它会强制校验方法名、参数、返回值是否真能匹配到可重写的父类方法。拼错名、少一个参数、父类方法是 private,都会立刻报错。

立即学习“Java免费学习笔记(深入)”;

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » 在Java里方法重写和方法重载有何区别_Java方法覆盖机制解析-java教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4003185+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4003185+
  • 本周更新: 0+
  • 最后更新: 2026-03-16