定义
在同一个类中,存在一个以上的同名方法,只要它们的参数个数不同或者参数类型不同即可构成方法的重载。
特点
要满足方法的重载,只要满足“两同一不同”即可。
两同:两同一个类、相同方法名。
一不同:参数列表不同。即参数个数不同、参数类型不同(参数的个数相同,类型相同,但顺序不同也视作参数列表不同)
举例
如下列代码所示:
②中的形参个数与①中的形参个数不同,构成了方法的重载。
③中的形参类型与②中的形参类型不同,构成了方法的重载。
④中的参数看起来与②中的参数看起来似乎一样,但顺序不同,等同于参数类型不同,依然可以构成方法的重载。
class Student{
String name;
int id;
int score;
//①
public void show(String name,int id,int score){
this.name = name;
this.id = id;
this.score = score;
System.out.println(name+"的学号是:"+id+",成绩是:"+score);
}
//② 参数个数不相同(①和②比较)
public void show(String name,int id){
this.name = name;
this.id = id;
System.out.println(name+"的学号是:"+id);
}
//③ 参数类型不同(②和③比较)
public void show(int id,int score){
this.id = id;
this.score = score;
System.out.println("学号为:"+id+"的成绩为:"+score);
}
//④ 参数顺序不同(④和②比较)
public void show(int id,String name){
this.name = name;
this.id = id;
System.out.println("学号为"+id+"的同学是:"+name);
}
}
注意
方法的重载与方法的权限、返回值类型、形参变量名、方法体都没有关系。即若对于同一个类中的同名方法,若不改变其参数列表,而更改方法的权限、返回值类型、形参变量名、方法体都无法构成方法的重载,会报此方法已经在该类中被定义的错误提示。
如图,将该方法的权限由public改为private,会导致报错。
重载方法的调用
若一个类中有多个构成重载的方法,我们通过对象来调用方法时,可以通过对象.方法名对方法进行选择,但是对于存在方法的重载时,为了可以调用正确的方法,我们通过具体的形参列表进行区别,实现执行指定的操作。