public class BaseBallPlayer { private String pname;//球员名称 public BaseBallPlayer (String name) { pname=name; } public void strikeBall() {//击球 System.out.println(pname+" strikes the ball!"); } public void catchBall() {//接球 System.out.println(pname+" catches the ball!"); } public void runBase() {//跑垒 System.out.println(pname+" runs to the base!"); } } public class Striker extends BaseBallPlayer { private Striker(String name){ super(name); } public void play(){ strikeBall(); runBase(); } } public class Catcher extends BaseBallPlayer{ private Catcher(String name) { super(name); } public void play() { catchBall(); runBase(); } } 基于这三个类的代码,设计BaseBallTeam类,除构造方法和继承的属性或方法外,仅对外提供addPlayer和startGame方法。BaseBallTeam可以存放多个类型为Striker或Catcher的球员。BaseBallTeam中的play方法来自于Striker类和Catcher类 (1)addPlayer方法的功能为:若当前 BaseBallTeam 未满员,则添加一个球员 对象到 BaseBallTeam 中,否则打印“球队满员,请另寻他处。” 2) startGame 方法的功能为:若球员人数大于 0,则让当前 BaseBallTeam 中 的全部球员对象逐一进行游戏,否则打印“没有球员可以开始游戏。”
时间: 2024-03-20 10:42:31 浏览: 73
C/C++实现的游戏角色名称名字随机生成代码
以下是基于给出的代码实现的BaseBallTeam类:
```
import java.util.ArrayList;
public class BaseBallTeam {
private ArrayList<BaseBallPlayer> players;
private int capacity;
public BaseBallTeam(int capacity) {
this.capacity = capacity;
players = new ArrayList<>();
}
public void addPlayer(BaseBallPlayer player) {
if (players.size() >= capacity) {
System.out.println("球队满员,请另寻他处。");
} else {
players.add(player);
}
}
public void startGame() {
if (players.size() == 0) {
System.out.println("没有球员可以开始游戏。");
} else {
for (BaseBallPlayer player : players) {
if (player instanceof Striker) {
((Striker) player).play();
} else if (player instanceof Catcher) {
((Catcher) player).play();
}
}
}
}
}
```
在这个类中,我们使用了一个ArrayList来存储球员对象。在addPlayer方法中,我们检查当前球队是否已经满员,如果是,就打印一个提示信息;否则,将球员对象添加到ArrayList中。在startGame方法中,我们首先检查球员人数是否为0,如果是,就打印一个提示信息;否则,使用for-each循环逐一取出ArrayList中的球员对象,并根据对象的具体类型调用相应的play方法。由于Striker和Catcher类中都有play方法,我们可以使用instanceof运算符来判断一个球员对象的具体类型,并进行相应的调用。
阅读全文