1、题目:

  • 写一个Army类,代表一支军队
  • 这个类有一个属性,Weapon[ ]  w  数组,用来存储该军队所有武器
  • Army类提供一个构造方法,构造方法里面通过传递一个int类型的参数来限定该类所能拥有的最大武器数量,并用这一大小来初始化数组 w
  • Army类提供一个addWeapon(Weapon wa)方法,表示把参数wa 所代表的武器加入到数组w中
  • 在这个类中还定义两个方法attrackAll()让w 数组中的所有武器攻击
  • 以及moevAll( )  让w 数组中的所有可移动的武器移动
  • 写一个主方法进行测试

提示:

Weapon是一个父类,应该有很多子武器,这些子武器应该有一些是可以移动的,有一些是可以攻击的

代码演示:

创建武器类:

package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 20:49* @Copyright 公司* 武器类*/
public class Weapon {}

创建移动的接口和射击的接口

package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 20:45* @Copyright 公司* 可移动的接口*/
public interface Moveable {/*** 可移动的行为*/public void move();
}
package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 20:47* @Copyright 公司*/
public interface Shootable {/*** 射击行为*/public void shoot();
}

创建大炮类

package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 20:52* @Copyright 公司* 大炮,不可移动,可射击*/
public class DaPao extends Weapon implements Shootable{@Overridepublic void shoot() {System.out.println("大炮射击");}
}

创建飞机类:

package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 20:54* @Copyright 公司* 战斗机,可移动,可开炮*/
public class Fighter extends Weapon implements Moveable,Shootable{@Overridepublic void move() {System.out.println("飞机起飞");}@Overridepublic void shoot() {System.out.println("飞机射击");}
}

创建坦克类:

package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 20:49* @Copyright 公司* 坦克,可移动可射击*/
public class Tank extends Weapon implements Moveable,Shootable{@Overridepublic void move() {System.out.println("坦克移动");}@Overridepublic void shoot() {System.out.println("坦克射击");}
}

创建物资飞机类:

package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 20:55* @Copyright 公司* 物资飞机,可移动不可射击*/
public class WuZiFly extends Weapon implements Moveable{@Overridepublic void move() {System.out.println("物资飞机起飞");}
}

创建异常类:

package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 21:22* @Copyright 公司*/
public class WeaponIndexOutOfBoundException extends Exception{public WeaponIndexOutOfBoundException() {}public WeaponIndexOutOfBoundException(String message) {super(message);}
}

创建武器类:

package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 20:57* @Copyright 公司* 军队*/
public class Army {/*** 武器数组*/private Weapon[] w;/*** 创建军队的方法* @param count 武器数量*/public Army(int count) {//动态初始化数组Weapon[] w=new Weapon[count];this.w = w;}/*** 将武器加入数组* @param weapon*/public void addWeapon(Weapon weapon) throws WeaponIndexOutOfBoundException {for (int i = 0; i <w.length; i++) {if(null==w[i]){w[i]=weapon;System.out.println(weapon+"武器添加成功");return;}}// 程序如果执行到此处说明,武器没有添加成功throw new WeaponIndexOutOfBoundException("武器数量已经超过武器数组长度");}/*** 所有可攻击的武器攻击*/public void attackAll(){//其实就是遍历数组for (int i = 0; i <w.length; i++) {if (w[i] instanceof Shootable){//调用子类中特有的方法,向下转型//类在转成某个接口的时候,不需要有继承关系Shootable shootable=(Shootable) w[i];shootable.shoot();}}}/*** 所有可移动的武器移动*/public void moveAll(){for (int i = 0; i <w.length; i++) {if (w[i] instanceof Moveable){//调用子类中特有的方法,向下转型//类在强制 类型转换的过程中,如果是类转换成接口类型,不需要有继承关系Moveable moveable= (Moveable) w[i];moveable.move();}}}}

创建测试类:

package com.lbj.javase.array.homework;/*** @author LBJ* @version V1.0* @Package com.lbj.javase.array.homework* @date 2021/3/26 22:36* @Copyright 公司*/
public class Test {public static void main(String[] args) {//创建一个军队Army army=new Army(4);//创建武器DaPao daPao=new DaPao();DaPao daPao2=new DaPao();Fighter fighter=new Fighter();Tank tank=new Tank();WuZiFly wuZiFly=new WuZiFly();//军队中加入武器try {army.addWeapon(daPao);army.addWeapon(fighter);army.addWeapon(tank);army.addWeapon(wuZiFly);army.addWeapon(daPao2);} catch (WeaponIndexOutOfBoundException e) {System.out.println(e.getMessage());}//让所有可移动的移动army.moveAll();//让所有可射击的射击army.attackAll();}}

结果:

"C:\Program Files\Java\jdk1.8.0_181\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2020.3.1\lib\idea_rt.jar=3649:C:\Program Files\JetBrains\IntelliJ IDEA 2020.3.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_181\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_181\jre\lib\rt.jar;D:\test01-2021-1-20\out\production\test01-2021-1-20;C:\Users\14811\.m2\repository\junit\junit\3.8.2\junit-3.8.2.jar" com.lbj.javase.array.homework.Test
com.lbj.javase.array.homework.DaPao@1540e19d武器添加成功
com.lbj.javase.array.homework.Fighter@677327b6武器添加成功
com.lbj.javase.array.homework.Tank@14ae5a5武器添加成功
com.lbj.javase.array.homework.WuZiFly@7f31245a武器添加成功
武器数量已经超过武器数组长度
飞机起飞
坦克移动
物资飞机起飞
大炮射击
飞机射击
坦克射击

Process finished with exit code 0

JAVA进阶开发之(数组练习题)相关推荐

  1. java进阶第二讲-数组、String类

    java进阶第二讲-数组.String类 1 回顾一下Object Object中的方法:public native int hashCode();带有native关键字的方法调用的是底层C++的dl ...

  2. 【java进阶06:数组】使用一维数组模拟栈数据结构 使用二维数组模拟酒店,酒店管理系统 Arrays工具类 冒泡排序算法、选择排序算法、二分法

    目录 数组 二维数组 总结 作业 Arrays工具类 数组 数组总结 及 静态初始化一维数组 /* Array:1.java语言中的数组是一种引用数据类型,不属于基本数据类型,数组的父类是Object ...

  3. JAVA进阶开发之(二维数组)

    1.二维数组其实是一个特殊的一维数组,特殊在这个二维数组中每一个元素是一个一维数组 2.就是一维数组里面都是一样的元素,二维数组就是把元素换成了一维数组 3.实际开发中,使用最多的就是一维数组,二维数 ...

  4. JAVA进阶开发之(异常练习题)

    编写程序模拟用户注册: 1.程序开始执行的时候,提示用户输入"用户名"和"密码"信息 2.输入信息之后,后台JAVA程序模拟用户注册 3.注册时用户名要求长度在 ...

  5. JAVA进阶开发之(异常类)

    保姆级别的异常类教学(附代码) 目录 1.什么是异常: 2. java语言中异常以什么形式存在的呢? 3.异常对应的现实生活中是怎样的? 4.异常处理机制 5.异常处理的具体方式 6.运行时异常编写程 ...

  6. java进阶开发-----Set集合、Map集合(接java集合)

    (一).Set系列集合 Set系列集合特点 无序:存取顺序不一致 不重复:可以去除重复 无索引:没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素. Set集合实现类特点 Ha ...

  7. JAVA进阶开发之(内部类概述)

    匿名内部类(相当于此类没有名字): 1.什么是内部类:在类的内部又定义了一个新的类 2.内部类的分类: 静态内部类:类似静态变量 实例内部类:类似实例变量 局部内部类:类似局部变量 3.使用内部类编写 ...

  8. java数组有跨类建立对象_50个性能优化的细节:Java高级开发必会,来学习下吧...

    作者:程序员之言链接:https://www.jianshu.com/p/aa55c9f1468d 前言: 在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯 ...

  9. Java进阶知识-数组类型

    前言 本来数组类型应该属于基础部分的知识,我将它写在进阶部分是因为数组既可以是基础数据类型数组,也可以是引用数据类型数组.所以我想先介绍完类与对象的基础之后,再给大家介绍数组.于是,今天这篇内容给大家 ...

最新文章

  1. ladar:16线激光雷达(雷神)
  2. R语言distMeeus函数计算大圆距离实战(Great Circle Distance)
  3. SUCEFUL:将ATM变得“惟命是从”的新型恶意程序
  4. java调用存储过程 oracle_java调用oracle存储过程
  5. 【转】一台台式机电脑 是集成显卡,我现在想搞两个显示器,一台显示器看监控,一台显示器自己...
  6. 我的编程学习日志(1)--进制转换
  7. Spark on Yarn:任务提交参数配置
  8. 6轮字节前端校招面试经验分享
  9. sop4封装尺寸图_妈妈再也不用担心我PCB封装又做错了~
  10. EasyUI:datagrid清空所有选择行
  11. python 笔记 冒泡排序
  12. 窗口间的通信(消息互发与数据传递)
  13. NIST SP800系列标准
  14. cc2530单片机的内核是什么_ZigBee技术开发:CC2530单片机原理及应用简介,目录书摘...
  15. Ubuntu下载、安装golang编辑器
  16. 网页旅游景点页面建设
  17. 信息管理与信息系统考研专业方向计算机,信息管理与信息系统考研专业方向
  18. 使用GHOST镜像文件在VMWARE WROKSTATION上安装系统(图)
  19. serendipity 写给自己
  20. 怎么用计算机算三角函数值,如何在手机计算器中由三角函数值求角度

热门文章

  1. 洛谷 P2251 质量检测
  2. PHP 魔术方法__set() __get() 方法详解
  3. 【ACM】hdu_1862_EXCEL排序_201308091948
  4. 解密:LL与LR解析 2(译,完结)
  5. JDBC-01-快速入门
  6. GDI+图像处理前言
  7. HTML--注册页面案例
  8. 对于JDBC的简单理解
  9. java读图片显示到前端_java从前端获取参数添加到图片后返回整张图片
  10. MATLAB报错Invalid ADAPTORNAME specified. Type 'imaqhwinfo' for a list of available ADAPTORNAMEs. Image