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

news/2024/9/20 6:37:22 标签: java, 学习, 后端, 前端, ide

简介

        在 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.niftyadmin.cn/n/5666782.html

相关文章

有效安全计划评估的基本指标

衡量安全计划成功与否的最有效指标是什么? 最直接的指标是:您的组织是否遭到入侵?如果答案是肯定的,那么显然还有工作要做。如果答案是否定的,那么您的状况就更好了——但情况比这更复杂。 即使您没有遭到入侵&#…

CSS的三种基本选择器

使用CSS控制网页格式有行内法&#xff0c;内嵌式&#xff0c;链接式&#xff0c;导入式等方法 这里将采用内嵌式的方法书写 内嵌法就是通过<style>标记将样式定义在HTML的文件头部中 1.标记选择器 标记选择器特点&#xff1a;定义了标记选择器之后&#xff0c;网页中…

『功能项目』QFrameWorkBug修改器界面【65】

我们打开上一篇64QFrameWork道具栏物品生成的项目&#xff0c; 本章要做的事情是做一个道具bug调试面板&#xff0c;可以增加主角属性&#xff0c;可以增加道具的功能 首先创建一个空物体&#xff08;钉子&#xff09; 按住Alt键将空物体钉到左侧 重命名为Left 创建Button、Im…

【计算机基础题目】Linux系统中文件权限 字母权限和数字权限的相互转换

创作日志&#xff1a; 很久之前对这个略有了解&#xff0c;但是现在完全忘记了&#xff0c;看到这类题目一脸懵逼&#xff0c;现在系统复习下。 1、权限的数字表示&#xff08;3位&#xff09; 在Linux系统中&#xff0c;文件权限由一个三位的八进制数表示&#xff0c;每一位代…

Mac 上哪个剪切板增强工具比较好用? 好用剪切板工具推荐

在日常文字编辑中&#xff0c;我们经常需要重复使用复制的内容。然而&#xff0c;新内容一旦复制&#xff0c;旧内容就会被覆盖。因此&#xff0c;选择一款易用高效的剪贴板工具成为了许多人的需求。本文整理了一些适用于 macOS 系统的优秀剪贴板增强工具&#xff0c;欢迎大家下…

C语言中的一些小知识点

一、逗号表达式 说明 在C语言中&#xff0c;逗号表达式是一种特殊的表达式&#xff0c;它允许你将多个表达式串联起来&#xff0c;并且会按照从左到右的顺序依次计算每个表达式&#xff0c;但整个表达式的值是最后一个表达式的值。 一般形式如下&#xff1a; expression1, …

大文件编辑器(QT)

项目需要做一个大文件编辑器&#xff0c;并对文件中特定的字符串进行高亮显示&#xff0c;尝试过几种方式。这里的大文件是指>几百兆的文件。 一 综述实现方式 方式1 用普通的QTextEdit来分段加载显示文本&#xff0c;当单段文本显示完毕并且继续向下拖动滚动条时&#xf…

从openAI最新模型GPT-o1再谈思维链(Cot)技术,大模型该怎么提升其逻辑推理能力?

“ 推理能力是大模型迈向AGI的必经之路 ” 最近openAI发布了号称史上最强模型——o1,其具有强大的逻辑推理能力,号称能达到人类的博士生水平。 而从o1模型的评测来看,o1模型在数学竞赛,编码,科学问答等方面表现良好,甚至高出了GPT4o一大截。 而且,o1在物理,化学,生…