1,定义一个接口Assaultable(可攻击的),该接口有一个抽象方法attack()。 2,定义一个接口Mobile(可移动的),该接口有一个抽象方法move()。
3,定义一个抽象类Weapon,实现Assaultable接口和Mobile接口,但并没有给出具体的 实现方法。
4,定义3个类:Tank,Flighter,WarShip都继承自Weapon,分别用不同的方式实现Weapon 类中的抽象方法。
5,写一个类Army,代表一支军队,这个类有一个属性是Weapon数组w(用来存储该军队所拥有的所有武器);该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,并用这一大小来初始化数组w。该类还提供一个方法addWeapon(Weapon wa),表示把参数wa所代表的武器加入到数组w中。在这个类中还定义两个方法attackAll()和moveAll(),让w数组中的所有武器攻击和移动。 6,写一个主方法去测试以上程序。
interfaceAssaultable{//可攻击的 void attack(); }
interface Mobile{//可移动的 void move(); }
abstractclass Weapon implementsAssaultable,Mobile { publicvoid attack(){} publicvoid move(){}
}
class Tank extends Weapon{ publicvoid attack(){
System.out.println("坦克攻击!!!"); }
publicvoid move(){
System.out.println("坦克移动!!!"); }
}
classFlighterextends Weapon{ publicvoid attack(){
System.out.println("战斗机攻击!!!"); }
publicvoid move(){
System.out.println("战斗机移动!!!");
}
}
classWarshipextends Weapon{ publicvoid attack(){
System.out.println("战船攻击!!!"); }
publicvoid move(){
System.out.println("战船移动!!!"); }
}
class Army{
Weapon[] w; intmax; intj=0; publicintgetMax() { returnmax; }
publicvoidsetMax(int max) { this.max = max; }
public Army(int max){ w= newWeapon[max];
this.max=max;
System.out.println("您最多拥有"+max+"个武器!!!") }
publicvoidaddWeapon(Weapon wa){ if(j<getMax()){ System.out.println("武器库足够!"+"已增加"+(j+1)+"个武器"); w[j]=wa; j++;
} else{
System.out.println("警告:武器库已满!!!不能增加武器!!!"); }
}
publicvoidattackAll(){
System.out.println();
System.out.println("所有武器准备战斗!!!"); for(int i=0;i<w.length;i++){ System.out.print((i+1)+"号"); w[i].attack();
}
}
publicvoidmoveAll(){ System.out.println();
System.out.println("所有武器准备移动!!!"); for(int i=0;i<w.length;i++){ System.out.print((i+1)+"号"); w[i].move();
}
}
}
publicclass Test1 { publicstaticvoid main(String[] args){ Army a = newArmy(4); a.addWeapon(new Tank()); a.addWeapon(newFlighter()); a.addWeapon(newWarship()); a.addWeapon(newWarship()); a.addWeapon(newWarship()); a.moveAll(); a.attackAll();
}
3,定义一个抽象类Weapon,实现Assaultable接口和Mobile接口,但并没有给出具体的 实现方法。
4,定义3个类:Tank,Flighter,WarShip都继承自Weapon,分别用不同的方式实现Weapon 类中的抽象方法。
5,写一个类Army,代表一支军队,这个类有一个属性是Weapon数组w(用来存储该军队所拥有的所有武器);该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,并用这一大小来初始化数组w。该类还提供一个方法addWeapon(Weapon wa),表示把参数wa所代表的武器加入到数组w中。在这个类中还定义两个方法attackAll()和moveAll(),让w数组中的所有武器攻击和移动。 6,写一个主方法去测试以上程序。
interfaceAssaultable{//可攻击的 void attack(); }
interface Mobile{//可移动的 void move(); }
abstractclass Weapon implementsAssaultable,Mobile { publicvoid attack(){} publicvoid move(){}
}
class Tank extends Weapon{ publicvoid attack(){
System.out.println("坦克攻击!!!"); }
publicvoid move(){
System.out.println("坦克移动!!!"); }
}
classFlighterextends Weapon{ publicvoid attack(){
System.out.println("战斗机攻击!!!"); }
publicvoid move(){
System.out.println("战斗机移动!!!");
}
}
classWarshipextends Weapon{ publicvoid attack(){
System.out.println("战船攻击!!!"); }
publicvoid move(){
System.out.println("战船移动!!!"); }
}
class Army{
Weapon[] w; intmax; intj=0; publicintgetMax() { returnmax; }
publicvoidsetMax(int max) { this.max = max; }
public Army(int max){ w= newWeapon[max];
this.max=max;
System.out.println("您最多拥有"+max+"个武器!!!") }
publicvoidaddWeapon(Weapon wa){ if(j<getMax()){ System.out.println("武器库足够!"+"已增加"+(j+1)+"个武器"); w[j]=wa; j++;
} else{
System.out.println("警告:武器库已满!!!不能增加武器!!!"); }
}
publicvoidattackAll(){
System.out.println();
System.out.println("所有武器准备战斗!!!"); for(int i=0;i<w.length;i++){ System.out.print((i+1)+"号"); w[i].attack();
}
}
publicvoidmoveAll(){ System.out.println();
System.out.println("所有武器准备移动!!!"); for(int i=0;i<w.length;i++){ System.out.print((i+1)+"号"); w[i].move();
}
}
}
publicclass Test1 { publicstaticvoid main(String[] args){ Army a = newArmy(4); a.addWeapon(new Tank()); a.addWeapon(newFlighter()); a.addWeapon(newWarship()); a.addWeapon(newWarship()); a.addWeapon(newWarship()); a.moveAll(); a.attackAll();
}
}
运行结果 :
您最多拥有4个武器!!!
武器库足够!已增加1个武器
武器库足够!已增加2个武器
武器库足够!已增加3个武器
武器库足够!已增加4个武器
警告:武器库已满!!!不能增加武器!!!
所有武器准备移动!!!
1号坦克移动!!!
2号战斗机移动!!!
3号战船移动!!!
4号战船移动!!!
所有武器准备战斗!!!
1号坦克攻击!!!
2号战斗机攻击!!!
3号战船攻击!!!
4号战船攻击!!!