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,写一个主方法去测试以上程序。
interface Assaultable{//可攻击的
void attack();
}
interface Mobile{//可移动的
void move();
}
abstractclass Weapon implements Assaultable,Mobile {
publicvoid attack(){}
publicvoid move(){}
}
class Tank extends Weapon{
publicvoid attack(){
System.out.println("坦克攻击!!!");
}
publicvoid move(){
System.out.println("坦克移动!!!");
}
}
class Flighter extends Weapon{
publicvoid attack(){
System.out.println("战斗机攻击!!!");
}
publicvoid move(){
System.out.println("战斗机移动!!!");
}
}
class Warship extends Weapon{
publicvoid attack(){
System.out.println("战船攻击!!!");
}
publicvoid move(){
System.out.println("战船移动!!!");
}
}
class Army{
Weapon[] w;
int max;
int j=0;
publicint getMax() {
return max;
}
publicvoid setMax(int max) {
this.max = max;
}
public Army(int max){
w= new Weapon[max];
this.max=max;
System.out.println("您最多拥有"+max+"个武器!!!") ;
}
publicvoid addWeapon(Weapon wa){
if(j<getMax()){
System.out.println("武器库足够!"+"已增加"+(j+1)+"个武器");
w[j]=wa;
j++;
}
else{
System.out.println("警告:武器库已满!!!不能增加武器!!!");
}
}
publicvoid attackAll(){
System.out.println();
System.out.println("所有武器准备战斗!!!");
for(int i=0;i<w.length;i++){
System.out.print((i+1)+"号");
w[i].attack();
}
}
publicvoid moveAll(){
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 = new Army(4);
a.addWeapon(new Tank());
a.addWeapon(new Flighter());
a.addWeapon(new Warship());
a.addWeapon(new Warship());
a.addWeapon(new Warship());
a.moveAll();
a.attackAll();
}
}。