0

0

在Java里重写和重载方法的区别_Java方法重载与重写说明

P粉602998670

P粉602998670

发布时间:2026-03-02 12:57:11

|

306人浏览过

|

来源于php中文网

原创

重写要求子类继承父类且方法名、参数列表、返回类型(或协变)一致,运行时动态绑定;重载发生在同一类中,仅需方法名相同、参数列表不同,编译期静态绑定。

在java里重写和重载方法的区别_java方法重载与重写说明

重写(Override)必须满足的继承关系

重写只发生在子类继承父类(或实现接口)时,子类提供与父类同名、同参数列表、同返回类型(或协变返回类型)的方法。JVM 在运行时根据对象实际类型决定调用哪个版本,这是多态的基础。

常见错误现象:private 方法无法被重写(子类里同名方法只是新定义)、static 方法看似“重写”实为隐藏(编译期绑定,不具多态性)、返回类型不兼容(如父类返回 Object,子类返回 String 是合法的,但返回 Integer 就不行)。

  • 必须用 @Override 注解显式声明(强烈建议),否则 IDE 和编译器能帮你捕获拼写错误或签名不匹配
  • 访问修饰符不能比父类更严格(publicprotected 合法,反之不行)
  • 父类方法是 finalstatic,子类无法重写

重载(Overload)发生在同一个类的作用域内

重载不要求继承关系,只要在同一个类(或同一个接口)中,方法名相同但参数列表不同(参数个数、类型、顺序任一不同即可),返回类型和访问修饰符可任意。编译器在编译期就根据调用处的实参类型和数量确定调用哪个方法。

容易踩的坑:return 类型不同不算重载(编译报错:duplicate method);自动拆箱/装箱可能引发意外匹配(比如传 int 时,method(int)method(Integer) 都存在,优先选 int 版本);泛型擦除后若仅靠返回类型区分,也会编译失败。

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

志设AI
志设AI

志设AI是一站式AI设计平台,集“AI生图 + 在线设计 + 素材交易 + 收益分成”于一体。

下载
  • 参数类型差异要足够明确,避免因隐式转换导致调用歧义
  • varargs(如 String...)是重载的“兜底选项”,应放在重载组的最后声明
  • 构造方法也能重载,且非常常见(如 new ArrayList() vs new ArrayList(Collection)

编译期绑定 vs 运行期绑定的关键区别

重载是静态绑定(编译期决定),重写是动态绑定(运行期决定)。这意味着:

如果变量声明类型是父类,但指向子类实例,调用重写方法会执行子类逻辑;而调用重载方法,只看**声明类型**和**实参字面量类型**,跟实际对象无关。

class A { void m(Object o) { System.out.println("A-Object"); } }
class B extends A { void m(String s) { System.out.println("B-String"); } }
A a = new B();
a.m("test"); // 输出 "A-Object" —— 因为 a 声明为 A,A 中没有 m(String),只能向上转型调用 m(Object)

这个例子说明:重载解析完全依赖引用类型(A)的可见方法签名,而不是实际对象(B)有哪些方法。

IDE 和编译器如何帮你识别混淆点

IntelliJ / Eclipse 对 @Override 有强校验:如果标注了但找不到可重写的方法,立刻报错;没标注但实际构成重写,会提示“Missing @Override”。而重载无此注解支持,全靠你手动核对参数列表。

  • 鼠标悬停在方法调用上,IDE 显示“resolved to …” 可确认当前是重载还是重写路径
  • 使用 javap -c 查看字节码:重写方法调用用的是 invokevirtual,重载方法调用取决于编译期推断,可能是 invokestaticinvokevirtual,但目标方法签名已固化
  • 单元测试中改变父类引用的实际类型,是验证重写是否生效最直接的方式

最容易被忽略的是:子类中一个方法,既可能因为父类有同签名方法而构成重写,又可能因为本类已有相似签名方法而构成重载——这时候得同时满足两套规则,稍有不慎就会触发编译错误或行为偏离预期。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
eclipse教程
eclipse教程

php中文网为大家带来eclipse教程合集,eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。php中文网还为大家带来eclipse的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

193

2023.06.14

eclipse怎么设置中文
eclipse怎么设置中文

eclipse设置中文的方法:除了设置界面为中文外,你还可以为Eclipse添加中文插件,以便更好地支持中文编程。例如,你可以安装EBNF插件来支持中文变量名,或安装Chinese Helper来提供中文帮助文档。本专题为大家提供eclipse设置中文相关的各种文章、以及下载和课程。

804

2023.07.24

c语言编程软件有哪些
c语言编程软件有哪些

c语言编程软件有GCC、Clang、Microsoft Visual Studio、Eclipse、NetBeans、Dev-C++、Code::Blocks、KDevelop、Sublime Text和Atom。更多关于c语言编程软件的问题详情请看本专题的文章。php中文网欢迎大家前来学习。

619

2023.11.02

Eclipse版本号有哪些区别
Eclipse版本号有哪些区别

区别:1、Eclipse 3.x系列:Eclipse的早期版本,包括3.0、3.1、3.2等;2、Eclipse 4.x系列:Eclipse的最新版本,包括4.0、4.1、4.2等;3、Eclipse IDE for Java Developers等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

178

2024.02.23

eclipse和idea有什么区别
eclipse和idea有什么区别

eclipse和idea的区别:1、平台支持;2、内存占用;3、插件系统;4、智能代码提示;5、界面设计;6、调试功能;7、学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

148

2024.02.23

eclipse设置中文全教程
eclipse设置中文全教程

本专题整合了eclipse设置中文相关教程,阅读专题下面的文章了解更多详细操作。

111

2025.10.10

eclipse字体放大教程
eclipse字体放大教程

本专题整合了eclipse字体放大教程,阅读专题下面的文章了解更多详细内容。

145

2025.10.10

eclipse左边栏不见了解决方法
eclipse左边栏不见了解决方法

本专题整合了eclipse左边栏相关教程,阅读专题下面的文章了解更多详细内容。

119

2025.10.15

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

43

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4万人学习

C# 教程
C# 教程

共94课时 | 10.5万人学习

Java 教程
Java 教程

共578课时 | 74.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号