1)定义一个弹药类 Bullet,有一个弹药名称属性 name。设计一个构造方法及 set、get方法。
(2)定义一个可装载弹药的接口 Loadable,该接口有一个装载的抽象方法 load()。
(3)定义一个可发射弹药的接口 Launchable,该接口有一个发射的抽象方法 launch()。
(4)定义一个武器类 Weapon,既可以装弹,也可以发射。武器类有一个属性 name(武器名称)、可使用的弹药 bullet(Bullet 对象)以及对应的 get、set 方法。重写 load 方法,在方法中输出装载的弹药。重写 launch 方法,在方法中输出发射的弹药。
(5)定义 3 个普通武器类:Tank、Flighter、WarShip 都继承武器类 Weapon。 每个普通武器类都有一个带一个参数 name 的构造方法,在构造方法中创建弹药对象。坦克 Tank 使用的弹药是炮弹,战斗机 Flighter 使用的弹药是导弹,舰艇 WarShip使用的弹药是鱼雷。
(6)定义一个类 Army,代表一支军队,包括:。
1) 属性:ArrayList
2) 获取军队的拥有的武器数量方法 getNum;
3)添置武器的方法 addWeapon
4) 让所有武器都装载弹药的方法 loadAll;
5)让所有武器都发起攻击的方法 luanchAll。
(7)编写一个测试类,在 main 方法中:
1)建立一支强大的军队;
2)添置各种型号武器,包括坦克、战机、舰艇。
3)输出军队拥有的武器数量;
4)让所有的武器都装上弹药;
5)让所有的武器都发射。
package 武器系统;
public class Bullet {//弹药类
private String name;
public Bullet(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package 武器系统;
public interface Launchable {//定义一个可发射弹药的接口
void launch(Bullet bullet);//发射的抽象方法
}
package 武器系统;
public interface Loadable {//可装载弹药的接口
void load(Bullet bullet);//装载的抽象方法
}
package 武器系统;
public class Weapon implements Loadable, Launchable{//武器类,继承发射装载接口,既可以装弹也可以发射
protected String name;//武器名称
protected Bullet bullet;//Bullet 对象
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Bullet getBullet() {
return bullet;
}
public void setBullet(Bullet bullet) {
this.bullet = bullet;
}
@Override
public void launch(Bullet bullet) {//重写 load 方法
// TODO Auto-generated method stub
System.out.println(name+" 发射"+bullet.getName());//输出装载的弹药
}
@Override
public void load(Bullet bullet) {//重写 launch 方法
// TODO Auto-generated method stub
System.out.println(name+" 装载"+bullet.getName());//输出发射的弹药
}
}
package 武器系统;
public class Tank extends Weapon{//坦克类
public Tank(String name) {//构造函数
this.name = name;
Bullet b=new Bullet("炮弹");//创建弹药对象
bullet=b;
}
}
package 武器系统;
public class Flighter extends Weapon{//战斗机
public Flighter(String name) {//构造函数
this.name = name;
Bullet b=new Bullet("导弹");//创建弹药对象
bullet=b;
}
}
package 武器系统;
public class WarShip extends Weapon{//舰艇类
public WarShip(String name) {//构造函数
this.name = name;
Bullet b=new Bullet("鱼雷");//创建弹药对象
bullet=b;
}
}
package 武器系统;
import java.util.ArrayList;
public class Army {//军队类
ArrayList weapon=new ArrayList<>();//构造一个对象数组
public Army() {//用来存放军队装备的各种武器
super();
this.weapon = weapon;
}
int getNum() {//获取军队的拥有的武器数量
return weapon.size();
}
void addWeapon(Weapon weapon) {//添置武器
this.weapon.add(weapon);//军队类添加武器
}
void loadAll() {//让所有武器都装载弹药
System.out.println("所有武器准备装弹药...");
for(int i=0;i



