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

相关推荐
why技术24 分钟前
在我眼里,这就是天才般的算法!
后端·面试
绝无仅有25 分钟前
Jenkins+docker 微服务实现自动化部署安装和部署过程
后端·面试·github
程序视点28 分钟前
Escrcpy 3.0投屏控制软件使用教程:无线/有线连接+虚拟显示功能详解
前端·后端
zhuyasen1 小时前
当Go框架拥有“大脑”,Sponge框架集成AI开发项目,从“手写”到一键“生成”业务逻辑代码
后端·go·ai编程
东皋长歌2 小时前
SpringBoot集成ELK
spring boot·后端·elk
布列瑟农的星空2 小时前
大话设计模式——关注点分离原则下的事件处理
前端·后端·架构
现在就干3 小时前
Spring事务基础:你在入门时踩过的所有坑
java·后端
该用户已不存在3 小时前
Gradle vs. Maven,Java 构建工具该用哪个?
java·后端·maven
JohnYan4 小时前
Bun技术评估 - 23 Glob
javascript·后端·bun
二闹4 小时前
聊天怕被老板发现?摩斯密码来帮你
后端·python