一、使用面向对象思想,编写下列代码。
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()。
package work_1;
import static java.lang.System.out;
public class Army {
private int max; // 武器的最大数量
private Weapon[] w; // 保存武器的数组,武器库
/**
* 构造方法,初始化数组
*
* @param max
*/
public Army(int max) {
this.max = max;
w=new Weapon[max];
}
/**
* addWeapon方法,添加武器
*
* @param wa
*/
public void addWeapon(Weapon wa) {
if(wa!=null){
for(int i=0;i<w.length;i++){
if(w[i]==null){
w[i]=wa;
out.println("添加武器成功.");
break;
}
}
}
}
/**
* attackAll()方法
* 判断数组中所有武器类型,并发起攻击
*/
public void attackAll() {
for (int i = 0; i < w.length; i++) {
Weapon temp = w[i];
if (temp instanceof Tank)
temp.attack();
else if (temp instanceof Flighter)
temp.attack();
else if (temp instanceof WarShip)
temp.attack();
}
}
/**
* moveAll()方法,
* 判断数组中所有武器类型,并移动
*
*/
public void moveAll() {
for (int i = 0; i < w.length; i++) {
Weapon temp = w[i];
if (temp instanceof Tank)
temp.move();
else if (temp instanceof Flighter)
temp.move();
else if (temp instanceof WarShip)
temp.move();
}
}
}
package work_1;
public interface Assaultable {
public abstract void attack();
}
package work_1;
import static java.lang.System.out;
public class Flighter extends Weapon {
private int i=1;
private double speed; // 属性 速度
private int year; // 生产年代
private char model;// 型号
private double hurt;// 伤害值
public Flighter(double speed,int year,char model,double hurt){
this.speed=speed;
this.year=year;
this.model=model;
this.hurt=hurt;
}
/**
* @see work_1.Assaultable#attack()
*/
public void attack() {
out.println("Flighter "+(i++)+" 攻击");
}
/**
* @see work_1.Mobile#move()
*/
public void move() {
out.println("Flighter "+(i++)+" 移动");
}
}
package work_1;
public interface Mobile {
public abstract void move();
}
package work_1;
import static java.lang.System.out;
public class Tank extends Weapon {
private int i=1;
private double speed; // 属性 速度
private int year; // 生产年代
private char model;// 型号
private double hurt;// 伤害值
public Tank(double speed,int year,char model,double hurt){
this.speed=speed;
this.year=year;
this.model=model;
this.hurt=hurt;
}
/**
* @see work_1.Assaultable#attack()
*/
public void attack() {
out.println("TANK "+(i++)+" 攻击");
}
/**
* @see work_1.Mobile#move()
*/
public void move() {
out.println("TANK "+(i++)+" 移动");
}
}
package work_1;
import static java.lang.System.out;
public class WarShip extends Weapon {
private static int i=1;
private double speed; // 属性 速度
private int year; // 生产年代
private char model;// 型号
private double hurt;// 伤害值
public WarShip(double speed,int year,char model,double hurt){
this.speed=speed;
this.year=year;
this.model=model;
this.hurt=hurt;
}
/**
* @see work_1.Assaultable#attack()
*/
public void attack() {
out.println("WarShip "+(i++)+" 攻击");
}
/**
* @see work_1.Mobile#move()
*/
public void move() {
out.println("WarShip "+(i++)+" 移动");
}
}
package work_1;
import static java.lang.System.out;
public class Weapon implements Assaultable, Mobile {
private double speed; // 属性 速度
private int year; // 生产年代
private char model;// 型号
private double hurt;// 伤害值
/**
* @see work_1.Assaultable#attack()
*/
public void attack() {
out.print("攻击");
}
/**
* @see work_1.Mobile#move()
*/
public void move() {
out.print("移动");
}
public double getSpeed() {
return speed;
}
public void setSpeed(double speed) {
this.speed = speed;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public char getModel() {
return model;
}
public void setModel(char model) {
this.model = model;
}
public double getHurt() {
return hurt;
}
public void setHurt(double hurt) {
this.hurt = hurt;
}
}