军队武器java代码
军队武器
Weapon类(父类)
package MyProject;
//所有武器的父类
public class Weapon {
}
Shootable类(接口)
package MyProject;
public interface Shootable {//射击行为void shoot();
}
Moveable类(接口)
package MyProject;
public interface Moveable {//移动方法void move();
}
Tank类
package MyProject;
//坦克是一种武器,可移动,可攻击
public class Tank extends Weapon implements Moveable,Shootable{@Overridepublic void move() {System.out.println("坦克移动");}@Overridepublic void shoot() {System.out.println("坦克开炮");}
}
Fighter类
package MyProject;
//战斗机是一种武器,可移动,可射击
public class Fighter extends Weapon implements Moveable,Shootable{@Overridepublic void move() {System.out.println("战斗机起飞");}@Overridepublic void shoot() {System.out.println("战斗机开跑!");}
}
GaoShePao类
package MyProject;
//高射炮是一种武器,可射击,不可移动
public class GaoShePao extends Weapon implements Shootable{@Overridepublic void shoot() {System.out.println("高射炮开炮!!!");}
}
WuZiFeiJi类
package MyProject;
//物资飞机
public class WuZiFeiJi extends Weapon implements Moveable{@Overridepublic void move() {System.out.println("运输机起飞!");}
}
Army类
package MyProject;
public class Army {//武器数组private Weapon[] weapons;//创建军队的构造方法public Army(int count){//动态初始化数组中每一个元素默认值是null//武器组组没有放武器weapons = new Weapon[count];}//将武器加入数组public void addWeapon(Weapon weapon) throws AddWeaponException{for (int i = 0; i < weapons.length; i++) {if(null == weapons[i]){weapons[i] = weapon;System.out.println(weapon+":武器添加成功!");return;}}//程序如果执行到这,说明武器没有添加成功throw new AddWeaponException("武器数量已经达到上限!");}//所有可攻击的武器public void attackAll(){//遍历数组for (int i = 0; i < weapons.length; i++) {if(weapons[i] instanceof Shootable){//调用子类中特有的方法,向下转型Shootable shootable = (Shootable)weapons[i];shootable.shoot();}}}//所有课移动的武器public void moveAll(){//遍历数组for (int i = 0; i < weapons.length; i++) {if(weapons[i] instanceof Moveable){//调用子类中特有的方法,向下转型Moveable moveable = (Moveable)weapons[i];moveable.move();}}}
}
AddWeaponException类(异常类)
package MyProject;
//添加武器异常
public class AddWeaponException extends Exception{public AddWeaponException(){}public AddWeaponException(String s){super(s);}
}
Test类
package MyProject;
public class Test {public static void main(String[] args) {//构建一个军队Army army = new Army(4);//军队只有四个武器//创建武器Fighter fighter = new Fighter();Fighter fighter2 = new Fighter();GaoShePao gaoShePao = new GaoShePao();Tank tank = new Tank();WuZiFeiJi wuZiFeiJi = new WuZiFeiJi();//添加武器try {army.addWeapon(fighter);army.addWeapon(gaoShePao);army.addWeapon(tank);army.addWeapon(wuZiFeiJi);army.addWeapon(fighter2);} catch (AddWeaponException e) {System.out.println(e.getMessage());
/* MyProject.Fighter@27973e9b:武器添加成功!MyProject.GaoShePao@312b1dae:武器添加成功!MyProject.Tank@7530d0a:武器添加成功!MyProject.WuZiFeiJi@27bc2616:武器添加成功!武器数量已经达到上限!*/}//所有可移动的移动army.moveAll();//战斗机起飞 坦克移动 运输机起飞!//所有可攻击的攻击army.attackAll();//战斗机开跑 高射炮开炮!!! 坦克开炮}
}
军队武器java代码相关推荐
- Java代码精简之道
前言 古语有云: 道为术之灵,术为道之体:以道统术,以术得道. 其中:"道"指"规律.道理.理论","术"指"方法.技巧.技术&q ...
- Java 代码精简之道 侵删
前言 古语有云: 道为术之灵,术为道之体:以道统术,以术得道. 其中:"道"指"规律.道理.理论","术"指"方法.技巧.技术&q ...
- 编写高性能Java代码的最佳实践
编写高性能Java代码的最佳实践 摘要:本文首先介绍了负载测试.基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践.最后研究了JVM特定的调优技巧.数据库端的优化和架 ...
- cmd怎么实现Java你好_java环境配置以及如何在cmd窗口运行java代码
对于初学java的人来说,电脑的环境配置也许会让你头疼,但只要你认真一些学习,相信对你来说都是OK的啦~ 首先回到桌面,选择我的电脑,单击右键属性,进入高级系统设置,点击环境变量设置.用户变量选择Te ...
- Android 使用java 代码获取res 里面的value 定义的数组
现在res value 里面定义了一个array.xml 内容如下 <?xml version="1.0" encoding="utf-8"?> & ...
- 使用JAVA代码实现Android布局(一)RelativeLayout
通常我们使用XML来书写Android的图形界面,XML虽然编写方便,但是在某些情况下不如JAVA代码灵活,所以在某些环境下还是必须使用JAVA代码来编写界面.我们以下XML代码为例,编写相应的JAV ...
- 转--Android如何在java代码中设置margin
======== 3 在Java代码里设置button的margin(外边距)? 1.获取按钮的LayoutParams LinearLayout.LayoutParams layoutParams ...
- java 读取流的字符编码格式_如何使用Java代码获取文件、文件流或字符串的编码方式...
标签: 今天通过网络资源研究了一下如何使用Java代码获取文件.文件流或字符串的编码方式,现将代码与大家分享: package com.ghj.packageoftool; import info.m ...
- matlab中调用java代码_Matlab中调用第三方Java代码
在Java中采用Matlab JA Builder可以实现调用m文件,采用这样的方式,可在Matlab的M文件中,直接调用Java类.这种方式可以表示为Java--> Matlab( m, Ja ...
最新文章
- Nature Methods:宏基因组物种组成分析工具MetaPhlAn2
- 做不了爱人,我们做什么?
- 纹理对象的实时姿态估计
- 我想成为计算机专业第一,我对计算机专业学生的忠告。
- 如何将32 x 32像素图标转换为16 x 16像素值的图标
- Linux 线程池的概念与实现
- AI上推荐 之 FiBiNET模型(特征重要性选择与双线性特征交叉)
- Aurix TC397多核开发建议
- 【愚公系列】华为云系列之DevCloud+ECS+MySQL搭建超级冷笑话网站【开发者专属集市】
- 托业考试常遇到的科学论文词汇汇总
- 大数据时代的地理信息系统发展
- App开发中适用的短信SDK
- sdp3命令 matlab,Yalmip学习笔记
- Android 双u盘方案
- Python程序执行时间测试
- JS下载文件到本地集合
- springboot核心基础之spring.factories机制
- 记录一个视频播放器VLC media player
- 实验一:汇编语言编程
- win10第一次安装数据库失败解决方案
热门文章
- 带孩子们做环球旅行的读后感_年轻爸妈别糊涂,这些奶奶、姥姥们不适合带孩子...
- Windows RC版、RTM版、OEM版、RTL版、VOL版的区别
- 原生实现freeCodeCamp上的Build a Personal Portfolio Webpage
- 屏蔽百度搜索结果页的推送广告
- 图 邻接矩阵幂的含义 离散数学定理14.11
- 【从零搭建后端基础设施系列(九)】-- VM容器化
- [USACO13FEB]拖拉机Tractor
- SSD: Single Shot MultiBox Detector 之再阅读
- 如何学习(Java)
- 菲尔兹奖得主陶哲轩:解题的策略