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 相关文章推荐
教你用Java在个人电脑上实现微信扫码支付
Jun 13 Java/Android
Spring中bean的生命周期之getSingleton方法
Jun 30 Java/Android
Java日常练习题,每天进步一点点(38)
Jul 26 Java/Android
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
Aug 30 Java/Android
java多态注意项小结
Oct 16 Java/Android
java objectUtils 使用可能会出现的问题
Feb 28 Java/Android
解析探秘fescar分布式事务实现原理
Feb 28 Java/Android
SpringBoot中使用Redis作为全局锁示例过程
Mar 24 Java/Android
Android开发之WECHAT微信小程序路由跳转的两种形式
Apr 12 Java/Android
Java异常体系非正常停止和分类
Jun 14 Java/Android
Java Spring读取和存储详细操作
Aug 05 Java/Android
Java并发编程之Executor接口的使用
深入理解以DEBUG方式线程的底层运行原理
浅谈什么是SpringBoot异常处理自动配置的原理
SpringAop日志找不到方法的处理
详解SpringBoot异常处理流程及原理
Java新手教程之ArrayList的基本使用
Java各种比较对象的方式的对比总结
Jun 20 #Java/Android
You might like
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
php简单分页类实现方法
2015/02/26 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
xml和web特殊字符
2009/04/28 Javascript
JavaScript prototype属性使用说明
2010/05/13 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
jquery单行文字向上滚动效果的实现代码
2014/09/05 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
vue中动态select的使用方法示例
2019/10/28 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
python清除字符串里非字母字符的方法
2015/07/02 Python
Python使用defaultdict读取文件各列的方法
2017/05/11 Python
Python实现全排列的打印
2018/08/18 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
python 顺时针打印矩阵的超简洁代码
2018/11/14 Python
python读取Excel表格文件的方法
2019/09/02 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
秋季运动会表扬稿
2014/01/16 职场文书
大学生家政服务项目创业计划书
2014/01/30 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server