首页 > Java > Java入门 > 正文

java中的@Override有什么作用

王林
发布: 2020-06-15 16:17:23
转载
6832人浏览过

java中的@Override有什么作用

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

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

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

举例说明:

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

立即学习Java免费学习笔记(深入)”;

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中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:博客园网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号