搜索
首页JavaJava入门java中的@Override有什么作用

java中的@Override有什么作用

Jun 15, 2020 pm 04:17 PM
@overridejava

java中的@Override有什么作用

首先我们来说一下@Override的一般作用是什么:

1、帮助自己检查是否正确地复写了父类中已有的方法;

2、告诉读代码的人,这是一个复写的方法。

举例说明:

比如现在我们有一个基类:

54a516e20b0336cf8d164c85236db52.png

(视频教程推荐:java视频教程

现在我们编写一个Apple子类,继承这个基类,并且复写基类中的show_name()方法。

391707fe34fb00cdb478c0c61c3d19d.png

执行的结果就是会打印出Apple:2字样。

其实,在我们手工复写父类的方法时,容易把方法的参数记错,如果此时不加@Override的话,编辑器就不会提示你:例如我们不加这个标签,悄悄的把参数改为float型。

38444c9f40ffb0dec9f51eeddf8fbca.png

 这个时候,其实我们并没有按照我们的意图成功复写方法,于是一个隐藏的bug就这样诞生了,相反加上Override的效果就是

33b9457bea503ff58f5f3a42c5ef7bf.png

IDE给出了错误提示,说明我们复写方法失败。

往往就是我们准备复写方法的时候结果,相反我们是重载了方法。

再比如:现在我们向Fruit类中添加一个私有方法,而在Apple中尝试复写

 @Override
    private void grow(){
    }

结果编译器会提示错误,这是一个非常低级的错误,但是有时候恰恰就不会被我们发现:那就是试着复写私有方法,但是当我们去掉Override标签的时候,编译器是不会报错的,而且可以执行。

其实Apple中的你所谓复写的grow只是一个针对于Apple本身的私有方法。完全是一个新的方法。

这就引出了一个问题,何为复写?

在面向对象中,只有接口和共有方法,继承方法才有复写,私有方法不可以复写,但是又想了一下,才明白:不是不可以复写,而是根本就不存在复写私有方法的概念!

这正是面向对象设计的初衷,私有方法本身就是为了封装在类内部,不希望别人来更改或者外部引用的。

推荐教程:java入门程序

以上是java中的@Override有什么作用的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:博客园。如有侵权,请联系admin@php.cn删除

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)