要领的重载指的是要领名一样,然则参数范例不一样
1.1、attack要领重载
有一种好汉,叫做物理进击好汉 ADHero,为ADHero 供应三种要领。
public void attack() public void attack(Hero h1) public void attack(Hero h1, Hero h2)
要领名是一样的,然则参数范例不一样
在挪用要领attack的时刻,会依据通报的参数范例以及数目,自动挪用对应的要领
public class ADHero extends Hero { public void attack() { System.out.println(name + " 举行了一次进击 ,然则不确定打中谁了"); } public void attack(Hero h1) { System.out.println(name + "对" + h1.name + "举行了一次进击 "); } public void attack(Hero h1, Hero h2) { System.out.println(name + "同时对" + h1.name + "和" + h2.name + "举行了进击 "); } public static void main(String[] args) { ADHero bh = new ADHero(); bh.name = "赏金猎人"; Hero h1 = new Hero(); h1.name = "盖伦"; Hero h2 = new Hero(); h2.name = "提莫"; bh.attack(h1); bh.attack(h1, h2); } }
1.2、可变数目的参数
假如要进击更多的好汉,就需要设想更多的要领,如许类会显得很累坠,像如许:
public void attack(Hero h1) public void attack(Hero h1,Hero h2) public void attack(Hero h1,Hero h2,Hero 3)
这时候,能够采纳可变数目的参数
只需要设想一个要领
public void attack(Hero ...heros)
即可代表上述一切的要领了
在要领里,运用操纵数组的体式格局处置惩罚参数heros即可
public class ADHero 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) { ADHero bh = new ADHero(); bh.name = "赏金猎人"; Hero h1 = new Hero(); h1.name = "盖伦"; Hero h2 = new Hero(); h2.name = "提莫"; bh.attack(h1); bh.attack(h1, h2); } }
演习: 治疗
(设想一个类Support (辅佐好汉)继续Hero,供应一个heal(治疗)要领
对Support的heal要领举行重载
heal()
heal(Hero h) //为指定的好汉加血
heal(Hero h, int hp) //为指定的好汉加了hp的血)
答案
public class Support extends Hero { public void heal() { System.out.println("对本身举行治疗"); } public void heal(Hero hero) { System.out.println("给好汉 " + hero + " 加血"); } public void heal(Hero hero, int hp) { System.out.println("给好汉 " + hero + " 加了 " + hp + "点血"); } }
更多相干内容请接见ki4网:JAVA视频教程
以上就是细致解说JAVA中要领重载观点——简朴易懂的细致内容,更多请关注ki4网别的相干文章!