要求
(1)、定义一个抽象类Weapon,该抽象类有两个抽象方法attack(),move():这两个方法分别表示武器的攻击方式和移动方式。
(2)、定义3个类:Tank,Flighter,WarShip都继承自Weapon,分别用不同的方式实现Weapon类中的抽象方法。
(3)、写一个类Army,代表一支军队,这个类有一个属性是Weapon数组w(用来存储该军队所拥有的所有武器);该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,并用这一大小来初始化数组w。该类还提供一个方法addWeapon(Weapon wa),表示把参数wa所代表的字符加入到数组w中。在这个类中还定义两个方法attackAll()和moveAll(),让w数组中的所有武器攻击和移动。
(4)、写一个主方法去测试以上程序。
实施
abstract class Weapon{
public abstract void attack();
public abstract void move();
}
class Tank extends Weapon {
@Override
public void attack() {
System.out.println("Tank攻击");
}
@Override
public void move() {
System.out.println("Tank移动");
}
}
class Flighter extends Weapon {
@Override
public void attack() {
System.out.println("Flighter攻击");
}
@Override
public void move() {
System.out.println("Flighter移动");
}
}
class WarShip extends Weapon {
@Override
public void attack() {
System.out.println("WarShip攻击");
}
@Override
public void move() {
System.out.println("WarShip移动");
}
}
class Army{
private Weapon[] w;
public Army (){
}
public Army (int sum){
this.w = new Weapon[sum];
}
public void addWeapon(Weapon wa){
boolean flag = true;
for (int i = 0; i < w.length; i++) {
if (w[i] == null){
w[i] = wa;
flag = false;
break;
}
}
if (flag){
System.out.println("武器库已满");
}
}
public void attackAll(){
for (int i = 0; i < w.length; i++) {
if (w[i] != null){
w[i].attack();
}
}
}
public void moveAll(){
for (int i = 0; i < w.length; i++) {
if (w[i] != null){
w[i].move();
}
}
}
}
public class Test42 {
public static void main(String[] args) {
Weapon wa1 = new Tank();
Weapon wa2 = new Flighter();
Weapon wa3 = new WarShip();
Army a = new Army(3);
a.addWeapon(wa1);
a.addWeapon(wa2);
a.addWeapon(wa3);
a.attackAll();
a.moveAll();
}
}
版权属于:牧瀬くりす
本文链接:https://hcyacg.com/tutorial/Java-8.html
本站文章采用知识共享署名4.0 国际许可协议进行许可,允许非商业转载,但必须注明出处!
1 条评论
可以哦,我们刚好有这个作业。