0

0

Java里方法重写需要注意什么_JavaOverride规则说明

P粉602998670

P粉602998670

发布时间:2026-01-13 15:16:02

|

966人浏览过

|

来源于php中文网

原创

Java重写要求方法名、参数列表完全一致,返回类型协变,访问权限不更严格,且不能重写static、final、private方法;@Override注解用于编译期校验重写正确性。

java里方法重写需要注意什么_javaoverride规则说明

重写方法必须有相同的方法签名

Java中重写(@Override)要求子类方法与父类被重写方法的名称、参数列表(类型、顺序、数量)完全一致,返回类型需协变(即子类返回类型是父类返回类型的子类型,或相同),且不能更宽泛。常见错误是参数类型写错,比如把 Object 写成 String,这实际是重载而非重写。

  • void print(Object obj)void print(String s) 是重载,不是重写
  • 父类返回 Number,子类可返回 Integer,但不能返回 Object
  • 方法名大小写敏感,toString()ToString() 视为两个不同方法

访问修饰符不能比父类更严格

子类重写方法的访问权限只能等于或大于父类方法——即 public 可重写 protectedpublic,但不能用 privateprotected 去重写 public 方法。否则编译直接报错:Cannot reduce the visibility of the inherited method

  • 父类是 protected void run() → 子类可用 protectedpublic,不可用 private
  • 父类是 public final void close() → 无法重写(final 禁止重写,和访问修饰符无关)
  • 接口默认方法(default)可被实现类重写,但若父接口有同名 default,实现类必须显式重写才能改变行为

@Override 注解不是必需但强烈建议加上

@Override 不影响运行,但它让编译器帮你检查:是否真在重写一个可继承的父类/接口方法。漏加时看似正常,但一旦父类方法被删或改名,子类“假重写”就变成独立方法,逻辑悄然失效。

class Animal {
    public void speak() { System.out.println("sound"); }
}
class Dog extends Animal {
    @Override  // ✅ 编译器确认:speak() 确实来自 Animal
    public void speak() { System.out.println("woof"); }
}
// 如果删掉 Animal.speak(),这里立刻编译报错,而不是静默变成新方法
  • 不要给私有方法、静态方法、构造器加 @Override(编译报错)
  • 实现接口方法也应加 @Override(Java 6+ 支持,语义更清晰)
  • IDE 通常能自动补全该注解,别跳过

static、final、private 方法都不能被重写

这是初学者高频误解点。它们各自被禁止重写的原因不同:

Amazon Nova
Amazon Nova

亚马逊云科技(AWS)推出的一系列生成式AI基础模型

下载

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

  • static 方法属于类,不参与多态;子类定义同名 static 方法只是“隐藏”(hiding),调用取决于引用类型,不是重写
  • final 方法明确禁止子类修改行为,编译器会拒绝任何重写尝试
  • private 方法对子类不可见,子类里写的同名方法本质上是全新方法,跟父类毫无关系

如果看到子类里有和父类 privatestatic 同名方法,别假设它被重写了——运行时不会触发多态分派,调试时容易误判调用链。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

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

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

193

2023.09.27

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

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

19

2026.02.03

string转int
string转int

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

1051

2023.08.02

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

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

27

2025.11.27

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

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

27

2025.11.27

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

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

27

2025.11.27

javascriptvoid(o)怎么解决
javascriptvoid(o)怎么解决

javascriptvoid(o)的解决办法:1、检查语法错误;2、确保正确的执行环境;3、检查其他代码的冲突;4、使用事件委托;5、使用其他绑定方式;6、检查外部资源等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

186

2023.11.23

java中void的含义
java中void的含义

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

134

2025.11.27

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

热门下载

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

精品课程

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

共23课时 | 4.4万人学习

C# 教程
C# 教程

共94课时 | 11.4万人学习

Java 教程
Java 教程

共578课时 | 82.3万人学习

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

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