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 11 Java/Android
SpringBoot2 参数管理实践之入参出参与校验的方式
Jun 16 Java/Android
Feign调用传输文件异常的解决
Jun 24 Java/Android
Spring整合Mybatis的全过程
Jun 28 Java/Android
logback如何自定义日志存储
Aug 30 Java/Android
JAVA API 实用类 String详解
Oct 05 Java/Android
解析mybatis-plus中的resultMap简单使用
Nov 23 Java/Android
springboot layui hutool Excel导入的实现
Mar 31 Java/Android
springboot用户数据修改的详细实现
Apr 06 Java/Android
SpringBoot中获取profile的方法详解
Apr 08 Java/Android
Android开发之WECHAT微信小程序路由跳转的两种形式
Apr 12 Java/Android
Android Studio 计算器开发
May 20 Java/Android
Java并发编程之Executor接口的使用
深入理解以DEBUG方式线程的底层运行原理
浅谈什么是SpringBoot异常处理自动配置的原理
SpringAop日志找不到方法的处理
详解SpringBoot异常处理流程及原理
Java新手教程之ArrayList的基本使用
Java各种比较对象的方式的对比总结
Jun 20 #Java/Android
You might like
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
100行PHP代码实现socks5代理服务器
2016/04/28 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
2013/11/22 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
使用JavaScript和C#中获得referer
2014/11/14 Javascript
jQuery实现根据滚动条位置加载相应内容功能
2016/07/18 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
Bootstrap源码解读导航(6)
2016/12/23 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
python 提取文件的小程序
2009/07/29 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
深入学习Python中的装饰器使用
2016/06/20 Python
Python中的sort()方法使用基础教程
2017/01/08 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
Python装饰器用法示例小结
2018/02/11 Python
python获取txt文件词向量过程详解
2019/07/05 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
学校捐书活动总结
2015/05/08 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书
浅谈Python 中的复数问题
2021/05/19 Python
mysql的单列多值存储实例详解
2022/04/05 MySQL
使用python绘制分组对比柱状图
2022/04/21 Python