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);
}
}
javase:数组:Army与Weapon
最新推荐文章于 2024-07-15 15:40:07 发布