@Override注解核心作用是编译期校验方法是否真正重写父类或接口方法,检查方法名、参数列表、返回类型兼容性及禁止重写static/final/private方法,防止伪重写导致的隐蔽bug。

加 @Override 注解不是为了“让重写生效”,而是让编译器帮你揪出那些看似重写、实则失败的低级错误——比如方法名少个字母、大小写错位、参数漏了一个,甚至把 initConfig() 写成 initConfg()。这些错误不加注解时完全通过编译,运行时才暴露为 NullPointerException 或逻辑跳过,极难定位。
拼写与签名错误,编译期就拦截
一旦加上 @Override,编译器会严格比对:该方法是否能在父类或接口中找到**完全匹配**的声明(方法名、参数类型与顺序、返回类型)。不匹配就直接报错,例如:
method does not override or implement a method from a supertype- 错误位置精准定位到方法定义行,不用翻父类源码手动核对
- 拼写错误(
onCreate→oncreate)、参数类型偏差(intvsInteger)、泛型擦除不一致等,全部被挡在编译阶段
用 IDE 自动生成,彻底绕过手敲风险
靠记忆或复制粘贴写重写方法,极易出错。正确做法是全程依赖 IDE 的智能生成:
- IntelliJ:按 Ctrl + O(Windows/Linux)或 Cmd + O(macOS),选择要重写的方法,自动生成带注解、签名完全正确的代码
- Eclipse:右键 → Source → Override Methods
- VS Code(装 Java 插件后):输入
@Override后触发提示,选中即可插入完整方法 - 禁用手动敲写方法名 + 手动加
@Override的组合操作
老代码补漏,不能只加注解
给已有方法补 @Override 时,别只图快加个注解了事。必须验证它是否真能重写:
立即学习“Java免费学习笔记(深入)”;
- 在子类方法名上按住 Ctrl(或 Cmd)点击 —— 能跳转到父类对应方法,才算真正重写成功
- 如果跳不过去,先检查父类方法是不是
private、static或final(这三类根本不可重写) - 再确认泛型、包装类/基本类型、数组维度等细节是否一致;建议直接删掉原方法,用 IDE 重新生成一遍
团队协作中强制落地
单人靠自觉容易松懈,需从流程上固化习惯:
- CI 流程中接入 Checkstyle 或 ErrorProne 规则,要求所有重写/实现方法必须带
@Override,否则构建失败 - 代码审查时重点关注:新增重写方法是否有该注解;老方法补注解后是否真能跳转到父类
- 新项目模板默认开启 IDE 提示:未加
@Override的疑似重写方法标黄警告


















