java中重写父类方法加不加@Override详解


Posted in Java/Android onJune 21, 2021

java重写父类方法加不加@Override

这个是我在刚学习java时遇到的问题,希望能给像我一样的新手学习时带来帮助,如有错误请指正,谢谢!

class Father{
    public String name;
    public int age;
    public Father(){
    }
    public void work(){
        System.out.println("盖房子");
    }
}
class Son extends Father{
    public int weight;
    public Son(){
    }
    public void work(){
        System.out.println(i);
    }
}

上面子类的work()方法和基类work()方法的控制器类型(包括返回值类型、参数等)是完全一致的,这种情况加不加@Override都是可以的,都可以对基类方法进行重写。

因为不写的情况下,java虚拟机会进行自动识别。

class Son extends Father{
    public int weight;
    public Son(){
    }
    public int work(int i){
        System.out.println();
    }
}

在上面这种情况下,work()方法会被系统认为是子类新定义的方法,没有继承基类,这也是被允许的。

class Son extends Father{
    public int weight;
    public Son(){
    }
    public int work(){
        System.out.println();
        return 1;
    }
}

但是这种情况只修改返回值类型时,是不被允许的,其仍被看做基类的重写,但是返回值类型变了,就会被编辑器认为基类重写返回值类型不一致而报错。

所以存在即合理,在编写代码时如果需要对基类进行重写还是加上@Override比较好,还可以检测一些容易忽略的错误。

@Override的作用

@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处:

1、可以当注释用,方便阅读

2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。

例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。

举例:在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性。

@Override
public void onCreate(Bundle savedInstanceState)
{…….}

这种写法是正确的,如果你写成:

@Override
public void oncreate(Bundle savedInstanceState)
{…….}

编译器会报如下错误:

The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method

以确保你正确重写onCreate方法(因为oncreate应该为onCreate)。

而如果你不加@Override,则编译器将不会检测出错误,而是会认为你为子类定义了一个新方法:oncreate

加不加@override有什么区别

1.简单来说@override注解是告诉编译器,下面的方法是重写父类的方法

2.如果不写@override注解去直接重写方法,编译器是不会判断你是不是正确重写了父类中的方法的。

如重写方法时参数与父类不同,程序是不会提示报错的。这会留下一个潜在的bug。

当你写了@override注解时,程序会判断你是否正确的重写了父类的对应方法。

而且加上此注解后,程序会自动屏蔽父类的方法。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
为什么在foreach循环中JAVA集合不能添加或删除元素
Jun 11 Java/Android
Java实战之用Swing实现通讯录管理系统
Jun 13 Java/Android
解决tk mapper 通用mapper的bug问题
Jun 16 Java/Android
如何解决springcloud feign 首次调用100%失败的问题
Jun 23 Java/Android
浅谈Python魔法方法
Jun 28 Java/Android
SpringBoot快速入门详解
Jul 21 Java/Android
Java9新特性对HTTP2协议支持与非阻塞HTTP API
Mar 16 Java/Android
Java基于Dijkstra算法实现校园导游程序
Mar 17 Java/Android
关于EntityWrapper的in用法
Mar 22 Java/Android
springboot用户数据修改的详细实现
Apr 06 Java/Android
详解Flutter自定义应用程序内键盘的实现方法
Jun 14 Java/Android
Java中的Kafka为什么性能这么快及4大核心详析
Sep 23 Java/Android
Java并发编程之Executor接口的使用
深入理解以DEBUG方式线程的底层运行原理
浅谈什么是SpringBoot异常处理自动配置的原理
SpringAop日志找不到方法的处理
详解SpringBoot异常处理流程及原理
Java新手教程之ArrayList的基本使用
Java各种比较对象的方式的对比总结
Jun 20 #Java/Android
You might like
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
PHP7 新特性详细介绍
2016/09/06 PHP
详解php中 === 的使用
2016/10/24 PHP
Yii2汉字转拼音类的实例代码
2017/04/18 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
2011/07/26 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
JavaScript操作select元素和option的实例代码
2016/01/29 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
javascript实现页面滚屏效果
2017/01/17 Javascript
vue.js绑定事件监听器示例【基于v-on事件绑定】
2018/07/07 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
python使用pygame框架实现推箱子游戏
2018/11/20 Python
Python 正则表达式匹配字符串中的http链接方法
2018/12/25 Python
python搜索包的路径的实现方法
2019/07/19 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
python设置表格边框的具体方法
2020/07/17 Python
网页布局中CSS样式无效的十个重要原因详解
2017/08/10 HTML / CSS
CSS3实现类似翻书效果的过渡动画的示例代码
2019/09/06 HTML / CSS
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
利用简洁的图片预加载组件提升html5移动页面的用户体验
2016/03/11 HTML / CSS
String、StringBuffer、StringBuilder有区别
2015/09/18 面试题
市场部规章制度
2014/01/24 职场文书
扬尘污染防治方案
2014/06/15 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
三下乡活动心得体会
2016/01/23 职场文书
Axios取消重复请求的方法实例详解
2021/06/15 Javascript