Day18——9.2——考察继承、接口、异常、多态

tech2022-08-16  137

开放型题目,随意发挥:

写一个类Army,代表一支军队,这个类有一个属性Weapon数组w(用来存储该军队所拥有的所有武器),该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,并用这一大小来初始化数组w。该类还提供一个方法addWeapon(Weapon wa),表示把参数wa所代表的武器加入到数组w中。在这个类中还定义两个方法attackAll()让w数组中的所有武器攻击;以及moveAll()让w数组中的所有可移动的武器移动。写一个主方法去测试以上程序。提示: Weapon是一个父类。应该有很多子武器。 这些子武器应该有一些是可移动的,有一些 是可攻击的。 */ public class WeaponTest { public static void main(String[] args) { Army a=new Army(3); //涉及多态 Weapon tank=new Tank(); Weapon bomb=new Bomb(); Weapon Plane=new Plane(); /****武器装载*****/ try { a.addWeapon(tank); a.addWeapon(bomb); a.addWeapon(Plane); a.addWeapon(tank); }catch (Exception e){ try { throw new WeaponException("武器已满,不可再加入新武器"); } catch (WeaponException weaponException) { weaponException.printStackTrace(); } } for(int i=0;i<a.w.length;i++){ if(a.w[i] instanceof Shootable){ a.w[i].attackAll(); } if(a.w[i] instanceof Moveable){ a.w[i].moveAll(); } } } } class Army{ Weapon[] w; public Army() { } /****传入参数来限定该类所能拥有的最大武器数量****/ public Army(int MaxnumberWeapon) { w= new Weapon[MaxnumberWeapon]; } /**把参数wa所代表的武器加入到数组w中****/ public void addWeapon(Weapon wa) throws WeaponException { int i=0; for ( ;i<w.length;i++){ if(w[i]==null){ w[i]=wa; return; } } /*****执行到此说明武器满了*****/ // if (i>=w.length) throw new WeaponException("武器已满,不可再加入新武器"); } } class Weapon{ public Weapon() { } /***让w数组中的所有武器攻击***/ public void attackAll(){ } /***让w数组中的所有可移动的武器移动**/ public void moveAll(){ } } /**是否可移动*/ interface Moveable{ } /**是否可攻击*/ interface Shootable{ } /***坦克类*/ class Tank extends Weapon implements Moveable , Shootable{ public void attackAll(){ System.out.println("坦克攻击"); } public void moveAll(){ System.out.println("坦克移动"); } } /**飞机类*/ class Plane extends Weapon implements Moveable , Shootable{ public void attackAll(){ System.out.println("飞机攻击"); } public void moveAll(){ System.out.println("飞机移动"); } } /**炸弹类*/ class Bomb extends Weapon implements Shootable{ public void attackAll(){ System.out.println("炸弹攻击"); } } /***武器异常******/ class WeaponException extends Exception{ public WeaponException() { } public WeaponException(String message) { super(message); } }
最新回复(0)