讲解Java中的@Override

@Override 是 Java 中非常常用的一个注解(Annotation),它的主要作用是标识子类方法覆盖(重写)了父类的方法 。虽然即使不加 @Override,Java 依然允许你去覆盖父类的方法,但使用它有非常重要的好处:


1️⃣ 基本作用

  • 当你在方法上加上 @Override,编译器会强制检查你是否确实在重写父类或接口中的方法;
  • 如果方法签名不匹配(比如方法名拼错、参数不一致、返回类型不兼容),编译器会直接报错;
  • 这可以有效避免因为拼写错误或方法签名不一致而导致程序潜在的 bug。

2️⃣ 使用场景

  • 重写父类中的方法:

    java 复制代码
    class Animal {
        void makeSound() {
            System.out.println("Some sound");
        }
    }
    
    class Dog extends Animal {
        @Override
        void makeSound() {
            System.out.println("Woof!");
        }
    }

    这里 Dog 的 makeSound 方法用 @Override 表示它覆盖了 Animal 中的同名方法。

  • 实现接口方法:

    java 复制代码
    interface Runner {
        void run();
    }
    
    class Person implements Runner {
        @Override
        public void run() {
            System.out.println("Person is running");
        }
    }

3️⃣ 常见错误示例

  • 方法签名和父类或接口中的方法不一致时会导致编译错误:

    java 复制代码
    class Animal {
        void makeSound() {}
    }
    
    class Dog extends Animal {
        @Override
        void makesound() { // 方法名大小写错误:makeSound → makesound
            System.out.println("Woof!");
        }
    }

    编译器会提示:

    sql 复制代码
    Error: method does not override or implement a method from a supertype

4️⃣ 为什么强烈推荐使用 @Override

✅ 避免拼写错误导致的方法没有真正重写;

✅ 让代码可读性更高,维护者一眼就能看出这是重写父类/接口的方法;

✅ 在重构代码或修改父类/接口方法名时能及时发现问题。


5️⃣ 适用范围

  • 在 类继承 中,用于标识子类重写父类方法;
  • 在 接口实现 中,用于标识类实现接口方法;
  • 从 Java 6 开始,还可以用于重写接口的 默认方法(Java 8 引入 default 方法后)。

✅ 小总结

@Override 并不是必需的,但加上它是一种良好的编码习惯,能帮助你及早发现错误,并让代码更加规范和清晰。

相关推荐
geovindu11 分钟前
rust: Iterator Pattern
开发语言·后端·设计模式·rust·行为模式·迭代器模
tianbin91136 分钟前
大模型API中转站选型观察:词元无忧API为何值得优先评估
后端
雨中飘荡的记忆43 分钟前
Hooks 怎么用?5 个能直接抄的自动化配置
后端
卷无止境1 小时前
Python 3.14 自由线程:拆掉 GIL 之后,我们到底得到了什么
后端·python
WL学习笔记2 小时前
模板初阶(C++)
开发语言·c++·后端·模板初阶
九零HTTP2 小时前
aiohttp 连接池:那个 limit 参数到底在限什么
后端
花间相见2 小时前
【计算基础|MySQL06】MySQL 架构与一条 SQL 的旅程
数据库·后端
Thneonl2 小时前
Spark 比 MR 快在哪?管住最贵的 shuffle
后端·架构
申君健24864182772022 小时前
AI SDK 概念全景总结(v7) 二
后端
申君健24864182772022 小时前
AI SDK 概念全景总结(v7)
后端