要求

(1)、定义一个抽象类Weapon,该抽象类有两个抽象方法attack(),move():这两个方法分别表示武器的攻击方式和移动方式。
(2)、定义3个类:Tank,Flighter,WarShip都继承自Weapon,分别用不同的方式实现Weapon类中的抽象方法。
(3)、写一个类Army,代表一支军队,这个类有一个属性是Weapon数组w(用来存储该军队所拥有的所有武器);该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,并用这一大小来初始化数组w。该类还提供一个方法addWeapon(Weapon wa),表示把参数wa所代表的字符加入到数组w中。在这个类中还定义两个方法attackAll()和moveAll(),让w数组中的所有武器攻击和移动。
(4)、写一个主方法去测试以上程序。

实施

abstract class Weapon{
    public abstract void attack();
    public abstract void move();
}

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{
    private Weapon[] w;
    public Army (){
    }
    public Army (int sum){
        this.w = new Weapon[sum];
    }
    public void addWeapon(Weapon wa){
        boolean flag = true;
        for (int i = 0; i < w.length; i++) {
            if (w[i] == null){
                w[i] = wa;
                flag = false;
                break;
            }
        }
        if (flag){
            System.out.println("武器库已满");
        }
    }

    public void attackAll(){
        for (int i = 0; i < w.length; i++) {
            if (w[i] != null){
                w[i].attack();
            }
        }
    }

    public void moveAll(){
        for (int i = 0; i < w.length; i++) {
            if (w[i] != null){
                w[i].move();
            }
        }
    }

}

public class Test42 {
    public static void main(String[] args) {

        Weapon wa1 = new Tank();
        Weapon wa2 = new Flighter();
        Weapon wa3 = new WarShip();

        Army a = new Army(3);

        a.addWeapon(wa1);
        a.addWeapon(wa2);
        a.addWeapon(wa3);

        a.attackAll();
        a.moveAll();

    }
}
我的文章对您有帮助吗?
我很可爱 请给我钱
扫一扫拿红包 → 扫商家收款码 → 花呗支付比红包多1分钱的金额
既可免费赞赏,又可完成支付宝支付任务!
最后修改:2020 年 02 月 28 日
如果觉得我的文章对你有用,请随意赞赏