栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

接口和继承:设计一个武器系统

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

接口和继承:设计一个武器系统

1)定义一个弹药类 Bullet,有一个弹药名称属性 name。设计一个构造方法及 set、get方法。

(2)定义一个可装载弹药的接口 Loadable,该接口有一个装载的抽象方法 load()。

(3)定义一个可发射弹药的接口 Launchable,该接口有一个发射的抽象方法 launch()。

(4)定义一个武器类 Weapon,既可以装弹,也可以发射。武器类有一个属性 name(武器名称)、可使用的弹药 bullet(Bullet 对象)以及对应的 get、set 方法。重写 load 方法,在方法中输出装载的弹药。重写 launch 方法,在方法中输出发射的弹药。

(5)定义 3 个普通武器类:Tank、Flighter、WarShip 都继承武器类 Weapon。 每个普通武器类都有一个带一个参数 name 的构造方法,在构造方法中创建弹药对象。坦克 Tank 使用的弹药是炮弹,战斗机 Flighter 使用的弹药是导弹,舰艇 WarShip使用的弹药是鱼雷。

(6)定义一个类 Army,代表一支军队,包括:。

1) 属性:ArrayList weapon(用来存放军队装备的各种武器);

2) 获取军队的拥有的武器数量方法 getNum;

3)添置武器的方法 addWeapon

4) 让所有武器都装载弹药的方法 loadAll;

5)让所有武器都发起攻击的方法 luanchAll。

(7)编写一个测试类,在 main 方法中:

1)建立一支强大的军队;

2)添置各种型号武器,包括坦克、战机、舰艇。

3)输出军队拥有的武器数量;

4)让所有的武器都装上弹药;

5)让所有的武器都发射。

package 武器系统;

public class Bullet {//弹药类
	private String name;

	public Bullet(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}
package 武器系统;

public interface Launchable {//定义一个可发射弹药的接口 
	void launch(Bullet bullet);//发射的抽象方法
}
package 武器系统;

public interface Loadable {//可装载弹药的接口
	void load(Bullet bullet);//装载的抽象方法
}
package 武器系统;

public class Weapon implements  Loadable,  Launchable{//武器类,继承发射装载接口,既可以装弹也可以发射
	protected String name;//武器名称
	protected Bullet bullet;//Bullet 对象
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Bullet getBullet() {
		return bullet;
	}
	public void setBullet(Bullet bullet) {
		this.bullet = bullet;
	}
	@Override
	public void launch(Bullet bullet) {//重写 load 方法
		// TODO Auto-generated method stub
		System.out.println(name+"    发射"+bullet.getName());//输出装载的弹药
	}
	@Override
	public void load(Bullet bullet) {//重写 launch 方法
		// TODO Auto-generated method stub
		System.out.println(name+"    装载"+bullet.getName());//输出发射的弹药
	}
}
package 武器系统;

public class Tank extends Weapon{//坦克类

	public Tank(String name) {//构造函数
		this.name = name;
		Bullet b=new Bullet("炮弹");//创建弹药对象
		bullet=b;
	}
	
}
package 武器系统;

public class Flighter extends Weapon{//战斗机 

	public Flighter(String name) {//构造函数
		this.name = name;
		Bullet b=new Bullet("导弹");//创建弹药对象
		bullet=b;
	}
	
}
package 武器系统;

public class WarShip extends  Weapon{//舰艇类

	public WarShip(String name) {//构造函数
		this.name = name;
		Bullet b=new Bullet("鱼雷");//创建弹药对象
		bullet=b;
	}
	

}
package 武器系统;

import java.util.ArrayList;

public class Army {//军队类
	ArrayList weapon=new ArrayList<>();//构造一个对象数组

	public Army() {//用来存放军队装备的各种武器
		super();
		this.weapon = weapon;
	}

	int getNum() {//获取军队的拥有的武器数量
		return weapon.size();
	}

	void addWeapon(Weapon weapon) {//添置武器
		this.weapon.add(weapon);//军队类添加武器
	}

	void loadAll() {//让所有武器都装载弹药
		System.out.println("所有武器准备装弹药...");
		for(int i=0;i 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/872095.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号