开放型题目,随意发挥:
写一个类Army,代表一支军队,这个类有一个属性Weapon数组w(用来存储该军队所拥有的所有武器),该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,并用这一大小来初始化数组w。该类还提供一个方法addWeapon(Weapon wa),表示把参数wa所代表的武器加入到数组w中。在这个类中还定义两个方法attackAll()让w数组中的所有武器攻击;以及moveAll()让w数组中的所有可移动的武器移动。写一个主方法去测试以上程序。提示: Weapon是一个父类。应该有很多子武器。
这些子武器应该有一些是可移动的,有一些
是可攻击的。
*/
public class WeaponTest {
public static void main(String
[] args
) {
Army a
=new Army(3);
Weapon tank
=new Tank();
Weapon bomb
=new Bomb();
Weapon Plane
=new Plane();
try {
a
.addWeapon(tank
);
a
.addWeapon(bomb
);
a
.addWeapon(Plane
);
a
.addWeapon(tank
);
}catch (Exception e
){
try {
throw new WeaponException("武器已满,不可再加入新武器");
} catch (WeaponException weaponException
) {
weaponException
.printStackTrace();
}
}
for(int i
=0;i
<a
.w
.length
;i
++){
if(a
.w
[i
] instanceof Shootable){
a
.w
[i
].attackAll();
}
if(a
.w
[i
] instanceof Moveable){
a
.w
[i
].moveAll();
}
}
}
}
class Army{
Weapon
[] w
;
public Army() {
}
public Army(int MaxnumberWeapon
) {
w
= new Weapon[MaxnumberWeapon
];
}
public void addWeapon(Weapon wa
) throws WeaponException
{
int i
=0;
for ( ;i
<w
.length
;i
++){
if(w
[i
]==null
){
w
[i
]=wa
;
return;
}
}
throw new WeaponException("武器已满,不可再加入新武器");
}
}
class Weapon{
public Weapon() {
}
public void attackAll(){
}
public void moveAll(){
}
}
interface Moveable{
}
interface Shootable{
}
class Tank extends Weapon implements Moveable , Shootable
{
public void attackAll(){
System
.out
.println("坦克攻击");
}
public void moveAll(){
System
.out
.println("坦克移动");
}
}
class Plane extends Weapon implements Moveable , Shootable
{
public void attackAll(){
System
.out
.println("飞机攻击");
}
public void moveAll(){
System
.out
.println("飞机移动");
}
}
class Bomb extends Weapon implements Shootable{
public void attackAll(){
System
.out
.println("炸弹攻击");
}
}
class WeaponException extends Exception{
public WeaponException() {
}
public WeaponException(String message
) {
super(message
);
}
}