当前位置: 首页 > news >正文

@Override -----好像删掉以后运行也没有问题。一个可有可无的注解?

简介

        在 Java 中,@Override 注解是可选的,但它提供了一些重要的好处。        

        虽然加不加 @Override 注解在运行时的效果是一样的,但使用 @Override 注解可以提高代码的可读性和维护性,并且可以在编译时捕获一些潜在的错误


使用 @Override 注解的好处

  1. 明确意图

    • 使用 @Override 注解明确表明你打算覆盖父类中的方法。这使得代码更加清晰易懂,其他开发者可以立即知道这个方法是一个重写的方法。
  2. 编译时检查

    • 如果你尝试覆盖一个不存在于父类中的方法(例如拼写错误或方法签名不匹配),编译器会报错。这有助于尽早发现并修复问题。
      1class Animal {
      2    void makeSound() {
      3        System.out.println("Animal sound");
      4    }
      5}
      6
      7class Dog extends Animal {
      8    @Override
      9    void makesound() {  // 注意这里的拼写错误
      10        System.out.println("Bark");
      11    }
      12}
      上面的代码中,由于 makesound 方法名拼写错误,编译器会报错,指出没有覆盖任何方法。如果没有 @Override 注解,这个错误可能不会被发现,直到运行时出现问题。
  3. 防止意外覆盖

    • 如果你不小心覆盖了父类的方法(可能是无意的),@Override 注解可以帮助你意识到这一点。这对于大型项目和复杂的继承层次结构尤为重要。
  4. API 变更通知

    • 如果父类中的方法签名发生了变化(例如参数列表改变),而子类没有相应更新,编译器会在 @Override 注解处报错。这有助于保持 API 的一致性。


示例

1class Animal {
2    void makeSound() {
3        System.out.println("Animal sound");
4    }
5}
6
7class Dog extends Animal {
8    @Override
9    void makeSound() {
10        System.out.println("Bark");
11    }
12}

        在这个例子中,@Override 注解明确表示 makeSound 方法是在覆盖 Animal 类中的同名方法。如果 Animal 类中没有 makeSound 方法,或者方法签名不匹配,编译器会报错。


总结

        虽然加不加 @Override 注解在运行时的效果是一样的,但从代码质量和维护性的角度来看,强烈建议在重写方法时使用 @Override 注解。它不仅提高了代码的可读性,还提供了编译时的额外检查,帮助你避免一些常见的错误。


http://www.mrgr.cn/news/30730.html

相关文章:

  • 卷王阿里又开启价格战,大模型价格降价85%!
  • 浏览器的内存回收机制监控内存泄漏
  • Spring Cloud Alibaba-(4)Sentinel【流控和降级】
  • UAC2.0 麦克风——音量控制
  • 关于用matplotlib.pyplot加载图片颜色不对的解决方法
  • 【C++前缀和】2222. 选择建筑的方案数|1656
  • U-Boot的基本使用
  • react hooks--useMemo
  • Flask 第十二课 -- 错误处理
  • 基于SpringBoot的图书进销存管理系统【附源码】
  • AutoGen Function Call 函数调用解析(二)
  • 数据库面试题整理
  • Ubuntu安装MySQL过程中没有出现设置root和密码的步骤导致无法root登入解决办法
  • <<编码>> 第 14 章 反馈与触发器(7)--分频器与计数器 示例电路
  • 上海AI气象大模型提前6天预测“贝碧嘉”台风登陆浦东 今年已多次精准预测
  • 工作烦恼与吐槽
  • 吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
  • Ubuntu初期配置常见问题汇总
  • 华为OD机试 - 构成指定长度字符串的个数(Python/JS/C/C++ 2024 E卷 100分)
  • WEB攻防-JS项目Node.js框架安全识别审计验证绕过