首页 > Java > java教程 > 详细讲解JAVA中方法重载概念——简单易懂

详细讲解JAVA中方法重载概念——简单易懂

王林
发布: 2019-08-30 14:30:42
转载
3025 人浏览过

1、什么方法重载?

方法的重载指的是方法名一样,但是参数类型不一样

1.1、attack方法重载

有一种英雄,叫做物理攻击英雄 ADHero,为ADHero 提供三种方法。

public void attack()
public void attack(Hero h1)
public void attack(Hero h1, Hero h2)
登录后复制

方法名是一样的,但是参数类型不一样
在调用方法attack的时候,会根据传递的参数类型以及数量,自动调用对应的方法

重载.png

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 + "点血");
    }
     
}
登录后复制

更多相关内容请访问PHP中文网:JAVA视频教程

以上是详细讲解JAVA中方法重载概念——简单易懂的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:cnblogs.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板