三分钟了解“Java重写”
要了解“Java重写”,首先要知道“继承”,继承是一种基于已有类(父类)创建新类(子类)的一种方式
下面的Son类继承了Father类
public class Father(){public void eat(String name,int age){System.out.println("正在用筷子吃饭...");}public final void work{}
}
public class Son extends Father(){@Override //注解public void eat(String str,int num){System.out.println("正在用刀叉吃饭...");}
}
-其中Object是所有类的父类,上面的Father类就默认继承了Object类(`public class Father extends Object(){}`)。
重写即为重新改写父类的方法,为了更准确的描述子类的行为特征
重写注意事项:
0、重写后的方法可以使用@Override修饰,表示该方法被重写。
1、重写后的方法访问权限要么和父类方法访问权限相同,要么大于父类方法(public > protected > 默认 > private)。例如上面的Father类用的是public,则Son类只能用public;但如果Father类用的是protected,则Son类可以使用protected,也可以使用public 。
2、父类中用final修饰的方法(注意:若用final修饰一个类,则该类没有子类,即不能被继承),子类不允许重写,但可以被继承。例如上面代码Father类中的work方法就不能被Son类重写,但可以被Son类继承。
3、父类中用static修饰的方法,子类也是不允许被重写,但可以被继承。例如上面Father类中的eat方法若改成:public static void eat(){}
,则只能被Son类继承,不能被其重写。
4、子类重写后的方法不能添加static修饰。
5、子类重写后的方法,方法名必须和父类方法名相同,参数列表除了名字不做限制外,其它必须相同,例如:上面Father类中(String name,int age)
和Son类中的(String str,int num)
,除了变量名字可以变动外,变量类型和数量都需保持一致。
6、返回值:
- a、如果父类返回值为void或基本数据类型,则重写后的方法返回值必须和父类方法返回值保持一致。例如上面Father类用的是void
public void eat(){}
,则Son类也只能用voidpublic void eat(){}
;如果Father类用的是intpublic int eat(){}
,则Son类也只能用intpublic int eat(){}
。 - b、如果父类方法返回值为引用类型,则重写后的方法返回值要么与父类一致,要么是父类方法返回值的子类。例如:Father类返回值为Object
public Object eat(){}
,则Son类返回值可以用String、int、long、double等,例如:
public Object eat(){System.out.println("正在用筷子吃饭...");return 1;
}
public String eat(){System.out.println("正在用刀叉吃饭..."); return "";
}
三分钟了解“Java重写”相关推荐
- 三分钟了解Java OOP思想
Java OOP 思想深度刨析 Java面向对象编程 面向对象编程简称OOP(Object--对象.Oriendted--导向的.Programming--程序设计) 面向对象通俗来讲,就是指使用丰富 ...
- java 接口强制转换_三分钟学习Java泛型中T、E、K、V、?的含义
作者:Java武学秘籍
- java vo转map_三分钟掌握POJO及其转换——PO、DO、DTO、VO
三分钟掌握POJO及其转换--PO.DO.DTO.VOmp.weixin.qq.com 概念 DTO(Data Transfer Object) 数据传输对象,原先是为分布式提供粗粒度的数据实体,减 ...
- java和python的比较-如何对比Python和Java,只需三分钟告诉你!
原标题:如何对比Python和Java,只需三分钟告诉你! Java和Python两门语言都是目前非常热门的语言,可谓北乔峰南慕容,二者不分上下,棋逢对手.但是对于初学者来说,非常困惑,因为时间和精力 ...
- java和python的web自动化有什么区别-三分钟看懂Python和Java的区别
随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...
- python和java一样吗-三分钟看懂Python和Java的区别
随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...
- java 下拉列表 枚举_「Java三分钟」精准而优雅——枚举类详解
关注我,每天三分钟,带你轻松掌握一个Java相关知识点. 1.为什么要用枚举 你在读一个老工程代码时,是否经常看见有几个类,里面放着成百上千的静态常量,场面相当恐怖,而且如果不加注释,很多你都不知道这 ...
- python和java的区别-三分钟看懂Python和Java的区别
随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...
- [附源码]计算机毕业设计JAVA每课三分钟教学资源管理系统
[附源码]计算机毕业设计JAVA每课三分钟教学资源管理系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe ...
最新文章
- java 合并 set_【Java必修课】各种集合类的合并(数组、List、Set、Map)
- python 语言教程(3)数据类型
- java excel data 导入数据_java实现导入导出excel数据
- JAVA将 带有空格或特殊字符的字符串转换成int数组的方法
- cookie和token的理解
- 团队作业-Beta冲刺(周三)
- 2021CCPC(桂林) - Suffix Automaton(后缀树+线段树)
- 彻夜怒肝!Spring Boot+Sentinel+Nacos高并发已撸完,快要裂开了!
- C++ 函数的引用传递
- 201521460005 实验五
- VUE 学习代码理解(1~5课时代码)
- 关于我对区块链和比特币的看法
- nginx.conf nginx设置用户权限
- keras实现手写字体识别
- Spark中的Driver
- “80后”全国模范检察官白静:传递青年干警正能量
- GIS开发中常用几何算法原理图解
- 3225 十进制到六进制
- 平稳信号、非平稳信号
- 史上最详细log4j使用文档