前言:
通常情况下,我们都会通过方法将重复代码抽取出来,使得代码简便,通熟易懂。而有时候我们常常会混淆方法重载和方法重写。
方法重载
作用:
具有相同功能的一组方法, 取相同的方法名, 让开发者不需要重复想不同的方法名来区分,让调用者不需要记住一堆方法名, 只需要记住一个方法名
定义:
在同一个类中,具有
相同方法名的一组方法,但是参数列表不一样的这一组方法就叫做方法重载。
参数列表不一样:
- 参数个数不一样
- 对应位置的参数的数据类型不一样
参数列表不一样,与参数名不一样无关
方法重载与返回值类型无关
例子(实现两个数相加):
public class Demo1 {
int a;
int b;
//同一个类中,方法重载
public int add(int a,int b){
return a+b;
}
//1.参数个数不一样
public int add(int a,int b,int c){
return a+b;
}
//2.对应位置的参数的数据类型不一样
public double add(double a,int b){
return a+b;
}
public double add(int a,double b){
return a+b;
}
public double add(double a,double b){
return a+b;
}
}
jdk不能同时存在两个相同的方法,判断是否是相同方法,
jdk判断步骤:
1.看方法名是否一样, 如果不一样, 肯定不是相同方法
2.如果一样, 再判断参数列表是否一样, 如果参数个数一样,并且对应位置的参数数据类型一样, 这就是相同方法, 如果参数列表不一样, 这就是形成方法重载.
方法重写
定义:
如果子类对父类\父辈类某个方法的实现(方法体)不满意,子类可以去重写父类的方法(方法体)
特征:
1.子类重写父辈类的方法
2.方法的方法名,参数列表与父类被重写的方法一样
3.子类重写的方法修饰符比父类被重写的访问修饰符一样,或者比它大
4.子类重写方法的返回值比父类被重写的方法返回值一样
例子:
//public void showInfo() → 方法签名
public void showInfo(){
System.out.println("宠物的自白:");
System.out.print("我的名字叫"+name+",健康值是:"+health+",和主人的亲密值是"+love);
}
//重写
public void showInfo(){
super.showInfo();//调用父类的方法
System.out.println(",我的颜色是"+getColor());
}
被重写方法调用情况:
子类实例调用被重写的方法,调用的是自己重写的方法
如果子类不重写,调用父类的方法
使用super.父类的方法,可以调用父类被重写的方法
区别:
1.方法重载是在
同一个类中实现的方法;而方法重写是在子类中实现的方法
2.方法重载与参数名不一样无关,与返回值类型无关;而方法重写的方法名,参数列表和返回值与父类被重写的方法一样
版权声明:本文为m0_69855013原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。