how2j.cn


工具版本兼容问题
方法的重载指的是方法名一样,但是参数类型不一样

本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



10分
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



步骤 1 : attack方法的重载   
步骤 2 : 可变数量的参数   
步骤 3 : 练习-治疗   
步骤 4 : 答案-治疗   

步骤 1 :

attack方法的重载

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

public void attack()
public void attack(Hero h1)
public void attack(Hero h1, Hero h2)

方法名是一样的,但是参数类型不一样
在调用方法attack的时候,会根据传递的参数类型以及数量,自动调用对应的方法
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); } }
步骤 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); } }
步骤 3 :

练习-治疗

Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
设计一个类Support (辅助英雄)继承Hero,提供一个heal(治疗)方法
对Support的heal方法进行重载
heal()
heal(Hero h) //为指定的英雄加血
heal(Hero h, int hp) //为指定的英雄加了hp的血
步骤 4 :

答案-治疗

在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

1分39秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)


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 + "点血"); } }
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 + "点血");
	}
	
}


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-04-20 【交作业】重载
snowand



盖伦和琴女的不可描述
package javasebasic.Chapter07.overload;

/**
 * 设计一个类Support (辅助英雄)继承Hero,提供一个heal(治疗)方法
 * 对Support的heal方法进行重载
 * heal()
 * heal(Hero h) //为指定的英雄加血
 * heal(Hero h, int hp) //为指定的英雄加了hp的血
 */
public class Support extends Hero {

    public void heal() {
        this.hp = hp + 5;
    }

    public void heal(Hero hero) {
        hero.hp = hp + 5;
    }

    public void heal(Hero hero, int hp) {
        hero.hp = this.hp + hp;
    }

    public static void main(String[] args) {
        Hero gailun=new Hero();
        gailun.hp=300;
        Support qinnv = new Support();
        qinnv.hp = 150;
        qinnv.heal();
        System.out.println(qinnv.hp);
        qinnv.heal(gailun);
        System.out.println(gailun.hp);
        qinnv.heal(gailun,100);
        System.out.println(gailun.hp);
        
    }


}

							






答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-04-20 交作业-打卡
暄染



public class Support extends Hero{
	public void heal() {
		System.out.println("加血");
	}
	public void heal(Hero h) {
		System.out.println("为"+h.name+"加血");
	}
	public void heal(Hero h, int hp) {
		System.out.println("为"+h.name+"加了"+hp+"的血");
	}
	public static void main(String[] args) {
		Support bh = new Support();
		bh.name = "赏金猎人";
		
		Hero h = new Hero();
		h.name = "提莫";
		h.hp = 50;
		
		bh.heal(h);
		bh.heal(h,50);
	}
}

							






答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-04-04 作业
2018-03-28 作业
2018-03-27 交作业
2018-03-14 做出来了,但是有问题,需要提问
2018-03-11 交作业
2018-02-09 站长大大,请问怎么利用可变数量的参数对多个英雄进行特定血量的治疗?
2018-01-23 可变数量的参数的写法问题
2018-01-16 我这个编译通过不了是为什么哦
2018-01-04 为什么这里的name是赏金猎人
2017-12-08 方法重载有错求解
2017-12-07 交作业。假如Hero类中已经有了叫盖伦的对象,那继承类Support中又创建一个对象也叫盖伦…有点混乱
2017-12-06 作业,多变量和可变数量的参数,这样写对吗?
2017-12-02 弄出来了
2017-11-06 不知道为什么
2017-09-26 方法的重载可以指定不同的返回值类型吗?
2017-09-20 求救!!!
2017-08-31 交作业,同时练习多参数和可变数量参数重载。
2017-08-03 关于参数的小细节问题
2017-06-15 题中的可变参数没看懂
2017-06-02 交作业
2017-02-11 public void attack(Hero ...heros)
2017-01-16 传递参数的疑问
2016-11-20 为什么不用bh.name而是用name?
2016-09-23 重载方法的时候,传入的参数如何理解
2016-07-29 在练习方法重载时,会出现如下问题
2016-06-06 利用前几节的内容,结合了一下,不知道这样写对不对,会不会浪费资源什么的
2016-06-04 不知道如何传入参数。。第三个练习的
2016-05-10 关于“可变数量的参数”的详细说明




提问之前请登陆
关于 JAVA 基础-类和对象-方法重载 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 389538688
站长会在每个工作日早上尽量回答提问(如果有漏掉没有回答的,请进群提醒一下)
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
站长是玻璃心,提问的时候请语气温柔些 kiss~
截止2017-5-19日累计提问 1638个,站长回答了 1546个
截止2017-8-15日累计提问 2788个,站长回答了 2544个

上传截图