讲师中心 微信公众号

工具推荐

视频效率加速
Seko
Seko

AI短剧一键生成成片

立刻MV
立刻MV

低成本歌曲 MV、视频生成

AniShort
AniShort

AI短剧协同制作平台

剧云
剧云

中文短剧剧本制作平台

Java里方法重载和重写有什么区别_Java多态实现方式说明

阿瑶同学_5463

阿瑶同学_5463

发布时间:2025-12-31 18:36:10

|

920人浏览过

|

来源于php中文网

原创

重载是编译期行为,发生在同一类中,仅由方法名和参数列表(类型、数量、顺序)决定;重写是运行期多态核心,发生在父子类间,要求签名一致、访问不更严、异常不更宽,且需@Override校验。

java里方法重载和重写有什么区别_java多态实现方式说明

重载(Overload)发生在同一个类里,靠参数列表区分

方法重载是编译期行为,JVM 在编译时就根据 方法名 和 参数类型、数量、顺序 确定调用哪个方法。返回类型、访问修饰符、异常声明都不参与重载判断。

常见错误:以为改了 return 类型就算重载 —— 不算,会编译报错 method xxx is already defined。

  • void print(String s) 和 void print(int i) 是重载
  • String get() 和 int get() 不是重载,编译失败
  • void show(List<string> list)</string> 和 void show(List<integer> list)</integer> 也不是重载(泛型擦除后都是 List)

重写(Override)发生在父子类之间,必须满足签名一致+访问更宽+异常更窄

重写是运行期多态的核心,依赖对象实际类型(而非引用类型)决定调用哪个方法。但前提是方法签名完全一致,且满足以下约束:

  • 方法名、参数列表、返回类型(或其子类型,Java 5 起支持协变返回)必须相同
  • 访问修饰符 不能比父类更严格(private → protected ✅,public → private ❌)
  • 抛出的 checked exception 不能比父类更多(throws IOException 可重写为不抛或只抛 FileNotFoundException)
  • 被 final、static、private 修饰的方法不能被重写
class Animal {
    public void speak() { System.out.println("sound"); }
}
class Dog extends Animal {
    @Override
    public void speak() { System.out.println("woof"); } // ✅ 正确重写
}

多态实现靠重写 + 向上转型 + 运行时绑定

Java 的多态不是靠重载,而是靠重写配合引用类型的动态分派。关键在于:声明类型是父类,实际对象是子类,调用时走的是子类重写后的方法。

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

IELTS Speaking Coach
IELTS Speaking Coach

雅思口语考官及导师。流利度、词汇资源、语法、发音(1-9分)口语评估。提供语法纠错、词汇建议及发音指导。

下载

容易忽略的点:static 方法和 private 方法不参与多态 —— 它们是静态绑定,看的是引用类型,不是实际对象类型。

  • Animal a = new Dog(); a.speak(); → 调用 Dog.speak()
  • Animal a = new Dog(); a.staticMethod(); → 调用 Animal.staticMethod()(即使 Dog 里有同名 static 方法)
  • super 关键字调用的是编译期确定的父类版本,和多态无关

@Override 注解不是可选的,是防错必需的

加 @Override 不是为了“表明意图”,而是让编译器帮你检查是否真的构成重写。漏掉它可能导致你以为重写了,其实只是定义了一个新方法(比如拼错方法名、参数类型写成 int 而非 Integer),结果多态失效,bug 难发现。

示例:

class Parent { void run() {} }
class Child extends Parent {
    @Override
    void runn() {} // 编译报错:method does not override or implement a method from a supertype
}

没加 @Override,这个 runn() 就只是个普通方法,和多态完全无关。

重载和重写的边界很清晰,但真正难的是在复杂继承链和泛型混合场景下判断某个调用到底走的是哪个版本 —— 这时候得看字节码里的 invokevirtual 指令目标,而不是凭感觉猜。

热门AI工具

更多
火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

3380

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

269

2026.02.03

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

7339

2023.08.02

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

375

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

375

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

375

2025.11.27

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

7339

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3485

2024.08.29

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

40

2026.11.06

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn