讲解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!");
        }
    }

    这里 DogmakeSound 方法用 @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 并不是必需的,但加上它是一种良好的编码习惯,能帮助你及早发现错误,并让代码更加规范和清晰。

相关推荐
考虑考虑16 分钟前
使用jpa中的group by返回一个数组对象
spring boot·后端·spring
GiraKoo24 分钟前
【GiraKoo】C++11的新特性
c++·后端
MO2T29 分钟前
使用 Flask 构建基于 Dify 的企业资金投向与客户分类评估系统
后端·python·语言模型·flask
光溯星河37 分钟前
【实践手记】Git重写已提交代码历史信息
后端·github
PetterHillWater1 小时前
Trae中实现OOP原则工程重构
后端·aigc
圆滚滚肉肉1 小时前
后端MVC(控制器与动作方法的关系)
后端·c#·asp.net·mvc
SimonKing1 小时前
拯救大文件上传:一文彻底彻底搞懂秒传、断点续传以及分片上传
java·后端·架构
深栈解码1 小时前
JUC并发编程 内存布局和对象头
java·后端
37手游后端团队1 小时前
巧妙利用装饰器模式给WebSocket连接新增持久化
后端
编程乐趣1 小时前
C#版本LINQ增强开源库
后端