Java重载和重写的区别「建议收藏」
2023-06-13 09:13:37 时间
方法的重载
1、方法的重载的概念
在同一个类中,允许存在一个以上的同名方法,只要同名的参数个数或者参数类型不同即可。
总结:”两同一不同“:同一个类、相同方法名
参数列表不同:参数个数不同,参数类型不同
2、例
构成重载的举例:
//一
//Arrays类中重载的sort() / binarySearch(); PrintStream中的println
//二
//如下的4个方法构成了重载
public void getSum(int i,int j){
System.out.println(i + j);
}
public void getSum(double d1,double d2){
}
public void getSum(String s,int i){
}
public void getSum(int i,String s){
}
不能构成重载的举例:
// public int getSum(int i,int j){
// return 0;
// }
//
// public void getSum(int m,int n){
//
// }
//
// private void getSum(int i,int j){
//
// }
3、如何判断是否构成方法的重载?
严格按照定义判断:两同一不同
跟方法的权限修饰符、返回值类型、形参变量名、方法体都没关系!
4、如何确定类中某一个方法的调用:
方法名 ——> 参数列表
方法的重写
1、什么是方法的重写(override 或 overwrite)?
子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作
2、应用:
重写以后,当创建子类对象以后,通过 子类对象调用子父类的同名同参数的方法时,实际执行的是子类重写父类的方法
3、举例:
class Circle{
public double findArea(){}//求面积
}
class Cylinder extends Circle{
public double findArea(){}//求面积
}
//***********************
class Account{
public boolean withdraw(double amt){}
}
class ChexkAccount extends Account{
public boolean withdraw(double amt){}
}
4、重写的规则
方法的声明 : 权限修饰符 返回值类型 方法名(形参列表) throws 异常的类型{
//方法体
}
约定俗称 : 子类中的叫重写的方法,父类中的叫被重写的方法
- 子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同
- 子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符
- 特殊情况 :子类不能重写父类中声明为 private 权限的方法
- 返回值类型:
- 父类被重写的方法的返回值类型是 void ,则子类重写的方法的返回值类型只能是 void
- 父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类或A类的子类
- 父类被重写的方法的返回值类型是基本数据类型(比如:double),则子类重写的方法的返回值类型必须是相同的基本数据类型(必须也是 double)
- 子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型(具体放到异常处理时候讲)
子类和父类中的同名同参数的方法要么都声明为非 static 的(考虑重写,要么都声明为 static 的(不是重写))。
要求:
- 子类重写的方法必须和父类被重写的方法具有相同的方法名称、参数列表
- 子类重写的方法的返回值类型不能大于父类被重写的方法的返回值类型
- 子类重写的方法使用的访问权限不能小于父类被重写的方法的访问权限
- 子类不能重写父类中声明为 private 权限的方法
- 子类方法抛出的异常不能大于父类被重写方法的异常
注意:
子类与父类中同名同参数的方法必须同时声明为非 static 的(即为重写),或者同时声明为 static 的(不是重写)。因为 static 方法是属于类的,子类无法覆盖父类的方法。
所以说方法的重载与重写的区别?
没有关系,只是名字带重
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
相关文章
- Java项目毕业设计:基于springboot+vue的电影视频网站系统「建议收藏」
- java中打印数组的方法_Java数组方法–如何在Java中打印数组
- think in java一_Think in Java(一):Java基础「建议收藏」
- java怎么运行_怎样启动JAVA?「建议收藏」
- java使用md5_Java_MD5的使用「建议收藏」
- java和基岩版区别_我的世界基岩版与Java版有什么区别?「建议收藏」
- c++和java哪个好学_c++语言和Java语言,初学者该如何选择?「建议收藏」
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- java获取服务器路径_Java获取此次请求URL以及服务器根路径的方法「建议收藏」
- java dom4j 添加节点_Java dom4j获取,添加,删除,查找,设置Element节点方法「建议收藏」
- java 读取字符串文件_Java读取文件为字符串
- java输出一个数组的元素_Java输出数组元素「建议收藏」
- java arraydeque poll,Java ArrayDeque「建议收藏」
- Java 重写与重载
- 【Java AWT 图形界面编程】菜单组件 ① ( 菜单相关组件简介 | 菜单组件使用步骤 | 菜单列表中添加分割线 | 设置 MenuItem 菜单项快捷键 )
- Java网站在Linux上的运行(java网站linux)
- Java实现Redis数据存储(java的redis)
- 使用Java连接SQL Server数据库,快速高效地管理数据(java连接sqlserver数据库)
- Java程序员的MySQL数据库之旅(java操作mysql数据库)
- Java存入Oracle数据库实现快速高效的数据存储(java存入oracle)