鱼C论坛

 找回密码
 立即注册
查看: 3478|回复: 7

[系列教程] 【JAVA练习题10】【类和对象】引用继承相关

[复制链接]
发表于 2020-2-20 18:13:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 dlnb526 于 2020-2-21 10:23 编辑

习题来源:how2j
本贴下答案内容为我和鱼油们的解答以及提示,如果大神们有更好的做法还请不吝指教。

本贴题目如侵权请联系我,将主动删除更改

                               
登录/注册后可看大图




【JAVA练习题10】【类和对象】引用继承相关  

       
1.引用
        如代码,问题:
h4所指向的对象和h2所指向的对象,是否是同一个对象?

  1. package charactor;
  2.   
  3. public class Hero {
  4.     public String name;
  5.     protected float hp;
  6.   
  7.     public static void main(String[] args) {
  8.            Hero h1 =  new Hero();
  9.            Hero h2 =  new Hero();
  10.            Hero h3;
  11.            Hero h4;
  12.            h3 = h1;
  13.            h4 = h3;
  14.     }
  15. }
复制代码





2.
物品类Item 有属性 name,price
  1. public class Item {
  2.     String name;
  3.     int price;
  4. }
复制代码
(i)设计一个类Armor护甲
继承Item类,并且额外提供一个属性ac: 护甲等级 int类型

实例化出两件护甲
名称 价格 护甲等级
布甲 300 15
锁子甲 500 40


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

  1. public void attack()
  2. public void attack(Hero h1)
  3. public void attack(Hero h1, Hero h2)
复制代码


方法名是一样的,但是参数类型不一样
在调用方法attack的时候,会根据传递的参数类型以及数量,自动调用对应的方法

如果要攻击更多的英雄,就需要设计更多的方法,这样类会显得很累赘
这时,可以采用可变数量的参数
只需要设计一个方法
  1. public void attack(Hero ...heros)
复制代码

即可代表上述所有的方法了
在方法里,使用操作数组的方式处理参数heros即可

  1. public class ADHero extends Hero {

  2.     public void attack() {
  3.         System.out.println(name + " 进行了一次攻击 ,但是不确定打中谁了");
  4.     }

  5.     // 可变数量的参数
  6.     public void attack(Hero... heros) {
  7.         for (int i = 0; i < heros.length; i++) {
  8.             System.out.println(name + " 攻击了 " + heros[i].name);

  9.         }
  10.     }

  11.     public static void main(String[] args) {
  12.         ADHero bh = new ADHero();
  13.         bh.name = "赏金猎人";

  14.         Hero h1 = new Hero();
  15.         h1.name = "盖伦";
  16.         Hero h2 = new Hero();
  17.         h2.name = "提莫";

  18.         bh.attack(h1);
  19.         bh.attack(h1, h2);

  20.     }

  21. }
复制代码
(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

不仅如此,在这个构造方法中,调用这个构造方法
  1. public Hero(String name,float hp)
复制代码





自己思考动手之后再看答案哦!


                               
登录/注册后可看大图


参考解答:(待更新)
游客,如果您要查看本帖隐藏内容请回复






                               
登录/注册后可看大图

评分

参与人数 1荣誉 +5 收起 理由
兄弟来学习 + 5 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-27 11:02:47 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-3 16:13:13 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-16 13:48:29 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-22 11:33:42 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-25 21:40:25 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-24 13:20:50 | 显示全部楼层
。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-7 11:33:09 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 00:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表