Java注解@override

诸神缄默不语-个人CSDN博文目录

在Java中,@Override是一个注解(Annotation),用于表明一个方法应该重写(Override)一个父类中的方法。

文章目录

  • 1. 使用@override的优点
  • 2. 简单的示例

1. 使用@override的优点

一、代码可读性方面

  1. 明确意图
    • 当其他开发者阅读代码时,@Override注解能够清晰地表明这个方法是故意重写父类方法的。例如,在一个继承自Animal类的Dog类中,如果有一个makeSound方法标记了@Override,就可以很容易理解这个方法是在重写Animal类中的同名方法。
  2. 遵循设计模式
    • 在面向对象编程中,遵循里氏替换原则(Liskov Substitution Principle)1是很重要的。使用@Override有助于确保子类正确地重写了父类方法,符合这种设计原则。

二、编译时检查方面

  1. 防止错误拼写
    • 如果方法名拼写错误或者参数列表不匹配父类中的方法,编译器会报错。例如,在Animal类中有一个eat方法,子类Cat中想要重写它,但是不小心写成了eatFood(没有正确重写),如果没有@Override注解,这个错误可能不会被及时发现,而有了这个注解,编译器就会提示错误。
  2. 方法签名匹配检查
    • 它还能确保方法的返回类型、异常类型等都符合重写的要求。比如父类方法返回int类型,子类重写方法不能返回double类型;父类方法抛出IOException,子类重写方法不能抛出更宽泛的未检查异常(如RuntimeException)而没有特殊处理。

2. 简单的示例

class Shape {public void draw() {System.out.println("Drawing a shape");}
}class Circle extends Shape {@Overridepublic void draw() {System.out.println("Drawing a circle");}
}

在这个例子中,Circle类中的draw方法使用了@Override注解来表明它是对Shape类中draw方法的重写。


  1. 里氏替换原则(Liskov Substitution Principle,LSP):面向对象设计的基本原则 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/67830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用大数据分析提升电子商务的转化率

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…

PHP语言的学习路线

PHP语言的学习路线 PHP(Hypertext Preprocessor)是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发。由于其易学易用、功能强大,PHP成为了许多动态网站和Web应用程序开发的首选语言。随着Web3.0和云计算的兴起&#xff0c…

【Rust自学】11.4. 用should_panic检查恐慌

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 11.4.1. 验证错误处理的情况 测试函数出了验证代码的返回值是否正确,还需要验证代码是否如预期的去处理了发生错误的情况。比…

【VUE】a链接下载跨域文件直接打开而非下载(解决办法)

背景&#xff1a;a链接下载跨域文件时&#xff0c;浏览器默认会打开文件&#xff0c;而非直接下载 <a :href"url" :download"fileName">下载</a>data() {return {url: http://xxxxx.mp4,fileName: xxxxx.mp4} }解决方式 服务器设置HTTP请求头…

MATLAB画柱状图

一、代码 clear; clc; figure(position,[150,100,900,550])%确定图片的位置和大小&#xff0c;[x y width height] %准备数据 Y1[0.53,7.9,8.3;0.52,6.8,9.2;0.52,5.9,8.6;2.8,5.8,7.9;3.9,5.2,7.8;1.8,5.8,8.4]; % withoutNHC X11:6; %画出4组柱状图&#xff0c;宽度1 h1…

t5-small模型部署

google-t5 https://huggingface.co/docs/transformers/model_doc/t5#inference https://hf-mirror.com/google-t5/t5-small 本地加载 支持的语言&#xff1a;English、French、Romanian、German pip install -i https://pypi.tuna.tsinghua.edu.cn/simple transformer sent…

STM32 I2C硬件配置库函数

单片机学习&#xff01; 目录 前言 一、I2C_DeInit函数 二、I2C_Init函数 三、I2C_StructInit函数 四、I2C_Cmd函数 五、I2C_GenerateSTART函数 六、I2C_GenerateSTOP函数 七、I2C_AcknowledgeConfig函数 八、I2C_SendData函数 九、I2C_ReceiveData函数 十、I2C_Sen…

MT6835天玑6100平台规格参数_MTK联发科安卓核心板方案定制开发

联发科MT6835平台集成了蓝牙、FM、WLAN 和 GPS 模块&#xff0c;是一个高度集成的基带平台。该芯片集成了两个 Arm Cortex-A76 内核&#xff08;运行频率高达 2.2GHz&#xff09;、六个 Arm Cortex-A55 内核&#xff08;运行频率高达 2.0 GHz&#xff09;和强大的多标准视频编解…

Microsoft 已经弃用了 <experimental/filesystem> 头文件

#define _CRT_SECURE_NO_WARNINGS 1 #define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING 1 //Microsoft 已经弃用了 <experimental / filesystem> 头文件&#xff0c;并计划在将来移除它。取而代之的是 C17 标准引入的 //<filesystem> 头文件&#xf…

中间件 | RocketMq - [broker 配置]

INDEX broker.conf broker.conf 干货见注释 ### 集群名 brokerClusterNameDefaultCluster### nameserver # nameserver 地址 namesrvAddr192.168.3.76:9876### broker # broker名&#xff0c;同名则主从 brokerNamea-m # broker id&#xff0c;唯一 brokerId0 # borker 端口 …

【微服务与K8S】

微服务核心概念 配置中心 定义&#xff1a;集中管理微服务配置的组件。作用&#xff1a;微服务数量多&#xff0c;配置复杂&#xff0c;配置中心让配置集中化&#xff0c;便于管理与修改。支持动态更新配置&#xff0c;无需重启服务&#xff0c;提升运维效率与灵活性。如开发、…

Zstandard压缩算法

简介 Zstandard(缩写为zstd)是一种开源的无损数据压缩算法,主要设计目标是提供高比率的压缩和快速的解压缩速度。它由Yann Collet开发,并于2015年首次发布。 特点 高比率的压缩(通常比gzip更好)。快速的解压缩速度(通常比gzip更快)。支持流式解压缩。可以选择不同的压…

下载并安装MySQL

在Linux系统上下载并安装数据库&#xff08;以MySQL为例&#xff09;的步骤如下&#xff1a; 一、下载MySQL 访问MySQL官网 打开浏览器&#xff0c;访问MySQL的官方网站&#xff1a;https://www.mysql.com/。 进入下载页面 在MySQL官网首页&#xff0c;找到并点击“Downloads…

c++开源协程库libgo介绍及使用,srs协程,boost协程 Boost::fiber

https://www.cnblogs.com/qwsdcv/p/9115364.html Boost - 从Coroutine2 到Fiber - 开学五年级了 - 博客园 协程就是由程序员控制跑在线程里的“微线程”。它可以由程序员调度&#xff0c;切换协程时代价小(切换根据实现不同&#xff0c;消耗的CPU周期从几十到几百不等)&#x…

用c实现C++类(八股)

在 C 语言中&#xff0c;虽然没有内建的面向对象编程&#xff08;OOP&#xff09;特性&#xff08;如封装、继承、多态&#xff09;&#xff0c;但通过一些编程技巧&#xff0c;我们仍然可以模拟实现这些概念。下面将用通俗易懂的方式&#xff0c;逐步介绍如何在 C 中实现封装、…

RabbitMQ 交换机、队列和路由键的命名规范

在 RabbitMQ 中&#xff0c;使用 Topic Exchange 模式时&#xff0c;交换机、队列和路由键的命名规范是非常重要的&#xff0c;尤其是在多环境和多微服务的场景中。合理的命名规范可以提高消息系统的可维护性、可扩展性以及可读性。以下是一些关于 Topic Exchange 模式中交换机…

记录一个移动端表格布局,就是一行标题,下面一列是对应的数据,一条一条的数据,还有点击数据进入详情的图标,还可以给一列加input输入框,还可以一对多

注&#xff1a;以下字段名都是随手写&#xff0c;并不规范&#xff0c;自己替换自己的&#xff0c;&#xff0c;只参考样式 注&#xff1a;以下重要的是布局&#xff0c;样式&#xff0c;宽高什么的再自己去搞吧 <view class"search"> <u-…

浅析大语言模型安全和隐私保护国内外标准和政策

过去两年&#xff0c;大模型技术已经普及并逐步渗透到各行各业&#xff0c;2025年注定是大模型应用井喷式发展的一年&#xff0c;AI在快速发展的同时&#xff0c;其带来的安全风险也逐渐凸显。人工智能系统的安全性和隐私保护已经成为社会关注的重点。 附下载&#xff1a;600多…

ELK日志分析实战宝典之ElasticSearch从入门到服务器部署与应用

目录 ELK工作原理展示图 一、ElasticSearch介绍&#xff08;数据搜索和分析&#xff09; 1.1、特点 1.2、数据组织方式 1.3、特点和优势 1.3.1、分布式架构 1.3.2、强大的搜索功能 1.3.3、数据处理与分析 1.3.4、多数据类型支持 1.3.5、易用性与生态系统 1.3.6、高性…

【老白学 Java】项目演练 - Quizzes #2

项目演练 - Quizzes #2 文章来源&#xff1a;《Head First Java》修炼感悟。 上一篇文章老白仔细分析了 Quizzes 的类结构&#xff0c;本文接上一章继续对功能模块逐步完善。 整个程序没有复杂的算法&#xff0c;仅仅用到了一些基础知识&#xff0c;如果大家已经了解了这部分内…