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-10-13 交作业
wwsw1230



交作业
package Seven;
public class Three  extends One{

	 public void heal() {
		 System.out.println(name+"向群体加血");
	 }
	 public void heal(One h) {
		 System.out.println(name+"向"+h.name+"加血");
	 }
	 public void heal(One h,int hp) {
		 System.out.println(name+"向"+h.name+"加血"+hp);
	 }
	 public static void main(String[] args) {
		 Three h =new Three();
		 h.name="蔡文姬";
		 
		 One h1=new One();
		 h1.name="小乔";
		 
		 One h2=new One();
		 h2.name="大乔";
		
		 h.heal();
		 h.heal(h1);
		 h.heal(h2,200);
	 }	 
}

							


1 个答案

wwsw1230 答案时间:2018-10-13
蔡文姬向群体加血
蔡文姬向小乔加血
蔡文姬向大乔加血200




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





2018-10-13 交作业
wwsw1230



交作业
package Seven;
public class Three  extends One{

	 public void heal() {
		 System.out.println(name+"向群体加血100");
	 }
	 public void heal(One h) {
		 System.out.println(name+"向"+h.name+"加血");
	 }
	 public void heal(One h,int hp) {
		 System.out.println(name+"向"+h.name+"加血"+hp);
	 }
	 public static void main(String[] args) {
		 Three h =new Three();
		 h.name="蔡文姬";
		 
		 One h1=new One();
		 h1.name="小乔";
		 
		 One h2=new One();
		 h2.name="大乔";
		
		 h.heal();
		 h.heal(h1);
		 h.heal(h2,200);
	 }	 
}

							


1 个答案

wwsw1230 答案时间:2018-10-13
蔡文姬向群体加血100
蔡文姬向小乔加血
蔡文姬向大乔加血200




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





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 不知道如何传入参数。。第三个练习的
2016-05-10 关于“可变数量的参数”的详细说明




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

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 902680467
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图