how2j.cn


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


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



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



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

步骤 1 :

attack方法的重载

edit
有一种英雄,叫做物理攻击英雄 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 :

可变数量的参数

edit
如果要攻击更多的英雄,就需要设计更多的方法,这样类会显得很累赘,像这样:

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

这时,可以采用可变数量的参数
只需要设计一个方法
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 :

练习-治疗

edit Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
设计一个类Support (辅助英雄)继承Hero,提供一个heal(治疗)方法
对Support的heal方法进行重载
heal()
heal(Hero h) //为指定的英雄加血
heal(Hero h, int hp) //为指定的英雄加了hp的血
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费3个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
查看本答案会花费3个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

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公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2019-05-15 作业
Raiden



交作业
public class Support extends Hero{

	public void heal(Hero...heros) {
		for (int i = 0; i < heros.length; i++) {
			System.out.println(this.name + "奶了" + heros[i].name);
		}
	}
	
	public static void main(String[] args) {
		Support sh = new Support();
		sh.name = "德鲁伊";
		
		Hero h1 = new Hero();
        h1.name = "盖伦";
        Hero h2 = new Hero();
        h2.name = "提莫";
        
        sh.heal(h1);
        sh.heal(h1, h2);
	}
}

							


3 个答案

文文iou 答案时间:2019-05-20
哈哈哈哈~

活宝士官长 答案时间:2019-05-18
鸡你太美

长期主义威尔 答案时间:2019-05-16
渐入佳境,破茧成蝶



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2019-05-10 作业
pk_兮兮



提交作业
package erbung;

class Hero{
	String name;
	
	public void attack() {
		System.out.println(name+"正在对其他英雄进行攻击");
	}
}
class SupportHero extends Hero{
	//public void attack() {
	//	System.out.println(name+"正在对其他英雄进行攻击");
	//}
	public void heal(Hero h1) {
		System.out.println(name+"正在对"+h1.name+"进行治疗");
	}
	//public void attack(Hero h1, Hero h2) {
	//	System.out.println(name+"正在对"+h1.name+"和"+h2.name+"进行治疗");
	//}
	public void heal(Hero h, int hp) {
		System.out.println(name+"给"+h.name+"奶了"+hp+"点血");
	}
	public void attack(Hero...heros) {
		for(int i = 0; i< heros.length; i++) {
			System.out.println(name+"对"+heros[i]+"进行治疗");
		}
	}
	
}
public class Overload {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SupportHero sh = new SupportHero();
		sh.name = "奶妈";
		
		Hero h1 = new Hero();
		h1.name = "盖伦";
		
		int hp = 500;
		sh.heal(h1, hp);
	}

}

							


2 个答案

猛猛 答案时间:2019-05-12
public class Hero { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed;//移动速度 } public class Support extends Hero{ public void heal(){ System.out.println(name+"进行了一次加血,对象不确定"); } public void heal(Hero h1){ System.out.println(name+"为"+h1.name+"加血"); } public void heal(Hero h1,float hp){ System.out.println(name+"为"+h1.name+"加"+hp+"血"); } public static void main(String[] args){ Support bh = new Support(); bh.name="赏金猎人"; Hero h1 = new Hero(); h1.name="盖伦"; bh.heal(); bh.heal(h1); bh.heal(h1,30); } }

心眼之魔剑 答案时间:2019-05-11
package Lol; public class Play { public static void main(String[] args) { Hero garen=new Hero(); garen.name="盖伦"; Hero ritz=new Hero(); ritz.name="瑞兹"; Support naiMa=new Support(); naiMa.heal(garen); naiMa.heal(garen,65); naiMa.heal(garen,ritz); } }



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2019-05-09 作业
2019-05-07 作业
2019-05-05 ZZ交作业 方法重载
2019-05-04 交作业
2019-05-01 作業
2019-05-01 交作业
2019-05-01 交作业
2019-05-01 交作业
2019-04-30 交作业
2019-04-29
2019-04-20 加油的周末
2019-04-16 可变化参数
2019-04-16 作业
2019-04-11 交作业
2019-04-08 交一哈作业
2019-04-04 交作业
2019-03-31 提交作业
2019-03-29 提交作业
2019-03-22 11111
2019-03-18 这应该也没错
2019-03-10 交作业
2019-03-10 交作业
2019-03-08 交作业
2019-03-01 交作业!
2019-02-24 交作业
2019-02-21 交作业
2019-02-21 交作业
2019-02-18 交作业
2019-01-21 继承不同包里的Hero类 为什么继承不了name属性
2019-01-21 继承不同包的Hero为什么继承不了方法
2019-01-16 交作业了
2019-01-15 作业
2019-01-15 交作业:练习-治疗
2019-01-15 冒泡
2019-01-03 交作业啦-加血量
2019-01-02 交作业
2018-12-27 。。。。
2018-12-26 我搞的不知道怎么样....
2018-12-20 作业
2018-12-20 交作业
2018-12-16 交作业,索拉卡牛批
2018-12-12 治疗
2018-12-12 交作业了
2018-12-07 治疗!
2018-12-03 交作业
2018-12-01 main方法中调用的方法是否要求要是静态的(static)?
2018-11-15 作业
2018-11-06 交作业
2018-11-01 作业
2018-10-28 括号内参数问题
2018-10-27 作业
2018-10-13 交作业
2018-10-13 交作业
2018-09-29 交作业!
2018-09-05 交作业
2018-09-03 交作业
2018-08-26 作业!
2018-08-22 交作业!
2018-08-14 答案
2018-07-30 小白交下作业,啊哈哈
2018-07-21 交作业
2018-07-05 交作业
2018-07-05 作业
2018-06-13 有没有办法不在Support里面建garen,直接使用Hero里面的garen
2018-06-04 交作业
2018-06-04 交作业
2018-06-01 交作业
2018-05-29 交作业
2018-05-19 交作业
2018-05-15 交作业
2018-05-07 交作业
2018-05-04 作业
2018-04-20 【交作业】重载
2018-04-20 交作业-打卡
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 不知道如何传入参数。。第三个练习的