当调用的方法名一样,方法的参数类型一样,只是传递参数的个数不一样时,就可以采用可变数量的参数,只需要设计一个方法,代码案例如下:
同一package下有以下两个类。
Hero.java源文件:
1 public class Hero { 2 String name; //姓名 3 float hp; //血量 4 float armor; //护甲 5 int moveSpeed; //移动速度 6 }
ADHero.java源文件:
1 public class ADHero extends Hero { 2 public void attack() { 3 System.out.println(name + " 进行了一次攻击 ,但是不确定打中谁了"); 4 } 5 /*方法一:可变数量的参数*/ 6 public void attack(Hero...sb) {//...的含义是可变参数,其本质是数组 7 for (int i = 0; i < sb.length; i++) { 8 System.out.println(name + " 攻击了 " + sb[i].name); 9 } 10 } 11 /*方法二:加强for循环*/ 12 // public void attack(Hero...sb) { 13 // for (Hero hero : sb) {/*方法二上面第7行的for循环亦可用这种加强型for循环进行替代*/ 14 // System.out.println(name + " 攻击了 " + hero.name); 15 // } 16 // } 17 public static void main(String[] args) { 18 ADHero bh = new ADHero(); 19 bh.name = "赏金猎人"; 20 21 Hero h1 = new Hero(); 22 h1.name = "盖伦"; 23 Hero h2 = new Hero(); 24 h2.name = "提莫"; 25 26 bh.attack(); 27 bh.attack(h1, h2); 28 } 29 30 }
其中,ADHero类继承了Hero类,在ADHero类中,主方法调用了attack()方法,为了减少方法的重复率就可以如上面那样设计。其中可变数量的参数的本质是数组,这由增强for循环也可以看出来。