(封装、继承、多态)创建三个类,组成一个继承树,表示游戏中的角色。

描述如下:

父类: Role。是所有职业的父类。 属性: name,表示角色的名字。

方法: public int attack() ,该方法返回值为角色的攻击对敌人的伤害。

Role 有两个子类:

1) 法师Magicer 属性:魔法等级(范围为1 ~ 10) 方法: public int attack() ,该方法返回法师的攻击对敌人造成的伤害值。 法师攻击伤害值为:魔法等级*魔法基本伤害值(固定为5)

2) 战士Soldier 属性:攻击伤害值 方法: public int attack() ,该方法返回战士的攻击对敌人造成的伤害值。 战士的攻击伤害值为:其攻击伤害属性值 注意:上述的三个类所有属性都应当作为私有,并提供相应的get/set 方法。

再设计一个Team 类,表示一个组队。具有如下方法

  1. addMember,表示组队增加一个成员。注意:组队成员最多为6 人
    提示:应当利用一个数组属性,保存所有成员
  2. attackSum,表示组队所有成员进行攻击时,对敌人造成的总伤害值 省略 get/set 方法后的类图如下:

    根据类图和描述,创建相应的类。并编写相应的测试代码。
package com.imooc.work;public abstract class Role {private String name;//角色名public abstract int attack();//返回角色的攻击对敌人的伤害//构造方法public Role() {}public Role(String name) {super();this.name = name;}//getter和setterpublic String getName() {return name;}public void setName(String name) {this.name = name;}}
package com.imooc.work;public class Soldier extends Role {private int damage;//伤害值//重写attact()public int attack() {// TODO Auto-generated method stubreturn damage;}//构造方法public Soldier() {super();}public Soldier(int damage,String name) {super(name);this.damage = damage;}//getter和setterpublic int getDamage() {return damage;}public void setDamage(int damage) {this.damage = damage;}}
package com.imooc.work;public class Magicer extends Role {private int level;//魔法等级//构造方法public Magicer() {super();}public Magicer(int level,String name) {super(name);this.setLevel(level);;}//重写attact()public int attack() {// TODO Auto-generated method stubreturn level*5;}//getter和setterpublic int getLevel() {return level;}public void setLevel(int level) {if(level>10||level<1){ //等级应在1~10之间System.out.println("魔法师等级赋值错误");level = 0;}this.level = level;}}
package com.imooc.work;public class Team {private Role[] team = new Role[6];//队伍private int i=0;//队伍中成员数//组队增加一个成员public void addMember(Role role){if(i < 6){team[i] = role;i++;}else{System.out.println("该队伍成员达到6人,不能继续增加");}}//组队所有成员进行攻击时,对敌人造成的总伤害值public int attackSum() {int sum=0;//储存总攻击值for(int j=0;j<i;j++){sum += team[j].attack();}return sum;}public Role[] getTeam() {return team;}public void setTeam(Role[] team) {this.team = team;}    }
package com.imooc.work;public class TestTeam {public static void main(String[] args) {Team t=new Team();t.addMember(new Magicer(2, "魔法师1"));t.addMember(new Soldier(1, "士兵1"));t.addMember(new Soldier(2, "士兵2"));t.addMember(new Soldier(3, "士兵3"));t.addMember(new Soldier(4, "士兵4"));t.addMember(new Soldier(5, "士兵5"));t.addMember(new Soldier(30, "士兵6"));System.out.println("队伍中成员为:");for(int i= 0;i < t.getTeam().length;i++){System.out.println("成员"+(i+1)+":"+t.getTeam()[i].getName()+" 伤害值为:"+t.getTeam()[i].attack());}System.out.println("队伍对敌人造成总伤害值为"+t.attackSum());}
}

转载于:https://my.oschina.net/u/3822073/blog/1827297

0603封装继承多态,综合练习相关推荐

  1. Java继承_Hachi君浅聊Java三大特性之 封装 继承 多态

    Hello,大家好~我是你们的Hachi君,一个来自某学院的资深java小白.最近利用暑假的时间,修得满腔java语言学习心得.今天小宇宙终于要爆发了,决定在知乎上来一场根本停不下来的Hachi君个人 ...

  2. python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)

    面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...

  3. python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态

    六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...

  4. python--编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音------使用类的封装继承多态的问题/使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息

    编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音 ------使用类的封装继承多态的问题 class Instrumnet():#乐器类def make_sound(self):pa ...

  5. c语言编程 菲薄拉,C语言设计模式-封装-继承-多态

    快过年了,手头的工作慢慢也就少了,所以,研究技术的时间就多了很多时间,前些天在CSDN一博客看到有大牛在讨论C的设计模式,正好看到了,我也有兴趣转发,修改,研究一下. 记得读大学的时候,老师就告诉我们 ...

  6. 大数据笔记8—java基础篇4(面向对象-封装-继承-多态)

    面向对象 一.面向对象 1.面向过程 1.2.举例 1.3.总结 二.面向对象 1.简述 2.举例 3.思想特点 2.1.类的定义格式 2.1.1.简述 2.2.2.格式 2.3.3.示例 三.类的使 ...

  7. 小白理解——封装继承多态

                                      一.封装 是什么:首先是抽象,把事物抽象成一个类,其次才是封装.对外表示为一个对象,隐藏对象的属性和动作实现的细节,仅对外公开接口. ...

  8. Day55-每日一道Java面试题-Java 面向对象编程三大特性: 封装 继承 多态

    Java 面向对象编程三大特性: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问.但是如果一个类没有 ...

  9. 面向对象 编程及面向对象三大属性:封装 继承 多态

    面向对象 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布式系统.网络管理结构. ...

  10. 白话文带你了解 封装 继承 多态

    这里讲的仅仅是带你理解 封装 继承 多态 染好您可以移步去别的文章学习具体的实现 (只是个人理解 您可以不爱,请别伤害哦!) 首先你要知道 java是面向对象的,说白了就是我拿你当个人,请认清你的地位 ...

最新文章

  1. java-集合排序,队列,散列表map以及如何遍历
  2. java 数组排序论文_Java中运用数组的四种排序方法
  3. Java之——利用Comparator接口对多个排序条件进行处理
  4. mysql主主复制某张表_MySQL主主复制实战
  5. android各个版本的名称和更新(转)
  6. stm32f407 tim4 复用_波分复用对比,CWDM、DWDM、CCWDM有何不同?
  7. 招博后,比利时鲁汶大学 A2H 部计算机视觉动物行为分析方向
  8. 提升源代码安全管控 从源头保护敏感数据
  9. Kali linux2.0里Metasploit的postgresql selected, no connection问题解决
  10. 动手学习数据分析(二)——数据处理
  11. Tab Space:超棒的Safari浏览器标签快速保存工具
  12. linux opendir php,php目录遍历函数opendir用法实例
  13. c语言范式编程之lsearch
  14. 9个顶级开发IoT项目的开源物联网平台
  15. 卧槽!VSCode 上竟然也能约会,谈对象了???
  16. Android多媒体技术(二)浅析Camera视频实时采集中涉及的参数配置
  17. 基于opencv的模式识别——水果类别识别与计数
  18. MySQL权限系统(一).The MySQL Access Privilege System 概述
  19. xdm,程序员外包能干吗?
  20. 艾司博讯:拼多多子账户的操作流程

热门文章

  1. 《Go圣经》章三:基本数据
  2. 波利亚《如何解题 How to Solve It》
  3. html发布机制tacat,序列分析一般程序中的一个实例
  4. 限流算法:滑动时间窗口算法。
  5. Soui Button学习一
  6. c语言中的字符数组和字符串之间的关系
  7. 2022-05-24 游程编码与位图压缩(C++)
  8. 运算放大器虚短和虚断
  9. ubuntu1804系统设置在哪里_Ubuntu 1804.4 server版本的安装及配置网络和图形化界面
  10. python建立英文语料库_使用NLTK创建新的语料库