(1)、定义一个接口IAssaultable(可攻击的),该接口有一个抽象方法attack()。
(2)、定义一个接口IMobile(可移动的),该接口有一个抽象方法move()。
(3)、定义一个抽象类Weapon,实现IAssaultable接口和IMobile接口,但并没有给出具体的实现方法。
(4)、定义3个类:Tank,Flighter,WarShip都继承自Weapon,分别用不同的方式实现Weapon类中的抽象方法。
(5)、写一个类Army,代表一支军队,这个类有一个属性是Weapon数组w(用来存储该军队所拥有的所有武器);该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,并用这一大小来初始化数组w。该类还提供一个方法addWeapon(Weapon wa),表示把参数wa所代表的武器加入到数组w中。在这个类中还定义两个方法attackAll()和moveAll(),让w数组中的所有武器攻击和移动。(提示:数组w中加入武器时,使用static关键字定义的变量,来记录索引位置信息)
(6)、写一个主方法去测试以上程序。(提示:Weapon w = new Tank())
public class Test{
public static void main(String[] args) {
Army army=new Army(1);
Weapon w=new Tank();
army.addWeapon(w);
army.attackAll();
army.moveAll();
}
}
interface IAssaultable{
public abstract void attack();
}
interface IMoible{
public abstract void move();
}
abstract class Weapon implements IAssaultable,IMoible{
}
class Tank extends Weapon{
@Override
public void attack() {
System.out.println("Tank开始攻击");
}
@Override
public void move() {
System.out.println("Tank开始移动");
}
}
class Flighter extends Weapon{
@Override
public void attack() {
System.out.println("Flighter开始攻击");
}
@Override
public void move() {
System.out.println("Flighter开始移动");
}
}
class WarShip extends Weapon{
@Override
public void attack() {
System.out.println("WarShip开始攻击");
}
@Override
public void move() {
System.out.println("WarShip开始移动");
}
}
class Army{
static int index=0;
public Weapon[] w;
public Army(int a){
w = new Weapon[a];
}
public void addWeapon(Weapon wa){
w[index]=wa;
index++;
}
public void attackAll(){
for (int i=0;i<w.length-1;i++){
w[i].attack();
}
}
public void moveAll(){
for (int i=0;i<w.length-1;i++){
w[i].move();
}
}
}