|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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,price
- public 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)
复制代码
自己思考动手之后再看答案哦!
参考解答:(待更新)
|
评分
-
查看全部评分
|