Java自学第三十六天

  今天实现一个接口习题。

  题目如下

1.定义一个canattack()接口,其中有一个attack()抽象方法

2.定义一个canmove()接口,其中有一个move()抽象方法

3.定义一个抽象类Weapon(),实现canattack()和canmove()两个接口,但不实现其中的抽象方法。

4.定义三个类,Tank,Fly,Ship,都继承Weapon分别用不同的方式实现 Weapon 类中的抽象方法

5.写一个类Army,代表一支军队,这个类有一个属性是Weapon数组w(用来存储该军队所拥有的所有武器)该类还

提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,并用这一大小

来初始化数组w。该类还提供一个方法addWeapon(Weapon wa),表示把参数wa所代表的武器加入到数组w中。在这

个类中还定义两个方法attackAll()和moveAll(),让w数组中的所有武器攻击和移动

6.定义一个主类来实现这些步骤。

代码如下

package hello;
import java.util.Scanner;
interface canattack{
public void attack();
}
interface canmove{
public void move();
}
abstract class Weapon implements canattack,canmove{

}
class Tank extends Weapon{
public void move() {System.out.println("Tank move");}
public void attack() {System.out.println("Tank attack");}
}
class Fly extends Weapon{
public void move() {System.out.println("Fly move");}
public void attack() {System.out.println("Fly attack");}
}
class Ship extends Weapon{
public void move() {System.out.println("Ship move");}
public void attack() {System.out.println("Ship attack");}
}
class Army {
int n;
Weapon[] w;
public Army(int a) {w=new Weapon[a];}
public void setn(int a) {n=a;}
public int getn() {return n;}
public void addWeapon(Weapon wa) {
w[getn()]=wa;
}
public void allattack() {
for(int i=0;i<getn();i++) {
System.out.println("第"+(i+1)+"号attack!");
w[i].attack();
}
}
public void allmove() {
for(int i=0;i<getn();i++) {
System.out.println("第"+(i+1)+"号move!");
w[i].move();
}
}
}

public class helloword {
public static void main(String[] args){
Army a=new Army(5000);
Scanner cn=new Scanner(System.in);
String s;
System.out.println("输入yes代表添加Weapon");
s=cn.next();
int n1=0;
a.setn(n1);
while(s.equals("yes")) {
System.out.println("1.Tank 2.Fly 3.Ship");
System.out.println("请选择:");
int t=cn.nextInt();

if(t==1) {a.addWeapon(new Tank());}
if(t==2) {a.addWeapon(new Fly());}
if(t==3){a.addWeapon(new Ship());}

n1++;
a.setn(n1);
s=cn.next();
}
a.allmove();
a.allattack();
cn.close();
}
}

 

  这道题涉及的知识点就多了些,在解决过程中对数组的长度忽视从而带来了问题寻找了一段时间,从这道题我学习到了要多考虑数组的长度,同时再次熟悉对接口问题的解决。

   明天继续寻找例题解答。

posted @ 2020-08-10 17:07  软工新人  阅读(181)  评论(0编辑  收藏  举报