对于方法重载就是方法名相同,但是方法的参数个数和类型不同,和返回值类型以及修饰符没有关系
如果有很多不同个数参数的时候就得有很多方法,这个时候我们可以使用可变数量的参数,以王者荣耀来写段代码看看
class Hero{
String name;
}
public class ApHero extends Hero {
public void attack(){
System.out.println(name+"技能乱放不知道打中谁了");
}
public void attack(Hero...heros){
for (int i=0;i<heros.length;i++){
System.out.println(name+"对"+heros[i].name+"使用了技能");
}
}
public static void main(String[] args) {
ApHero apHero=new ApHero();
apHero.name="张良";
Hero h1=new Hero();
h1.name="陈咬金";
Hero h2=new Hero();
h2.name="亚瑟";
apHero.attack();
apHero.attack(h1);
apHero.attack(h1,h2);
}
}
从main方法里看,我们调用方法的时候参数都不相同,如果每种情况我们都写个方法对应岂不是很累赘,这个时候看一下上面
public void attack(Hero...heros){
for (int i=0;i<heros.length;i++){
System.out.println(name+"对"+heros[i].name+"使用了技能");
}
}
在方法里,使用操作数组的方式处理参数heros即可
看一下结果:
张良技能乱放不知道打中谁了
张良对陈咬金使用了技能
张良对陈咬金使用了技能
张良对亚瑟使用了技能