马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 dlnb526 于 2020-2-21 10:23 编辑
习题来源:how2j
本贴下答案内容为我和鱼油们的解答以及提示,如果大神们有更好的做法还请不吝指教。
本贴题目如侵权请联系我,将主动删除更改
【JAVA练习题10】【类和对象】引用继承相关
1.引用
如代码,问题:
h4所指向的对象和h2所指向的对象,是否是同一个对象?
package charactor;
public class Hero {
public String name;
protected float hp;
public static void main(String[] args) {
Hero h1 = new Hero();
Hero h2 = new Hero();
Hero h3;
Hero h4;
h3 = h1;
h4 = h3;
}
}
2.
物品类Item 有属性 name,pricepublic class Item {
String name;
int price;
}
(i)设计一个类Armor护甲
继承Item类,并且额外提供一个属性ac: 护甲等级 int类型
实例化出两件护甲
名称 价格 护甲等级
布甲 300 15
锁子甲 500 40
有一种英雄,叫做物理攻击英雄 ADHero
为ADHero 提供三种方法
public void attack()
public void attack(Hero h1)
public void attack(Hero h1, Hero h2)
方法名是一样的,但是参数类型不一样
在调用方法attack的时候,会根据传递的参数类型以及数量,自动调用对应的方法
如果要攻击更多的英雄,就需要设计更多的方法,这样类会显得很累赘
这时,可以采用可变数量的参数
只需要设计一个方法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);
}
}
(ii)设计一个类Support (辅助英雄)继承Hero,提供一个heal(治疗)方法
对Support的heal方法进行重载
heal()
heal(Hero h) //为指定的英雄加血
heal(Hero h, int hp) //为指定的英雄加了hp的血 (iii)为Hero设计4个参数的构造方法
这四个参数分别是
String heroName
float heroHP
float heroArmor
int heroMoveSpeed (iv) 设计一个构造方法,但是参数名称不太一样,分别是
String name
float hp
float armor
int moveSpeed
不仅如此,在这个构造方法中,调用这个构造方法public Hero(String name,float hp)
自己思考动手之后再看答案哦!
参考解答:(待更新)
|