javase:数组:Army与Weapon

public class ArmyWeapon {
    public static void main(String[] args) {
        // 军队只有3个武器
        Army army = new Army(3);
        Tank tank = new Tank();
        ItalyArtillery italyArtillery = new ItalyArtillery();
        TransportPlane transportPlane = new TransportPlane();
        try {
            army.addWeapon(transportPlane);
            army.addWeapon(italyArtillery);
            army.addWeapon(tank);
            army.addWeapon(tank);
        } catch (AddWeaponException e) {
            System.out.println(e.getMessage());
        }

        army.moveAll();
        army.attackAll();
    }
}

interface Movable {
    void move();
}

interface Shootable {
    void shoot();
}

class Weapon {

}

class TransportPlane extends Weapon implements Movable {
    @Override
    public void move() {
        System.out.println("运输机起飞!");
    }
}

class ItalyArtillery extends Weapon implements Shootable {
    @Override
    public void shoot() {
        System.out.println("意大利炮开炮!");
    }
}

class Tank extends Weapon implements Movable, Shootable {
    @Override
    public void move() {
        System.out.println("坦克移动!");
    }

    @Override
    public void shoot() {
        System.out.println("坦克开炮!");
    }
}

class Army {
    private Weapon[] weapons;

    public Army() {
    }

    public Army(int count) {
        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(weapons + "添加成功!");
                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 Movable) {
                // 类在强制转换过程中,如果是类转换成接口类型,之间不需要存在继承关系,也可以转换。
                Movable movable = (Movable) weapons[i];
                movable.move();
                ((Movable) weapons[i]).move();
            }
        }
    }
}

class AddWeaponException extends Exception {
    public AddWeaponException() {
    }

    public AddWeaponException(String message) {
        super(message);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值