如果Boat类需要继承物品类,也就是说,Boat类即是交通工具,也是属于物品的一种,代码该做怎样的调整:抽象类: MaterialObject:抽象物品类 AbstracTransport:抽象交通工具类 (place:所在地;capacity:容量;goodes:货物列表) moveTo(String destination)移动到目的地 AbstractRule:抽象规则类 judge()根据规则判断结果 AbstractGame:抽象游戏类 (gameOverRule:游戏结束规则; gameSuccessRule:游戏输赢规则; gameData:游戏数据) play()执行游戏 Animal:动物类 addedToRecipe(MaterialObject m)添加某物品进该动物的食谱 isFood(MaterialObject m)判断某物品是否在它的食谱中 canBeEat(MaterialObject m)判断某物品能不能被吃到 eat(MaterialObject m)吃某样食物 Person:人类 Plante:植物类 Boat:船类 crossRiver()过河 crossRiver(Person person)将人运载过河 crossRiver(Person person,MaterialObject m)将人和某样物品运载过河 board(MaterialObject m)物品m上船 crossRiver(MaterialObject m)物品m下船 CrossRiverRule:判断是否都渡过河的规则类 hasCross(MaterialObject m)物品m是否渡过了河 ObjectExistRule:判断物品是否都还存在的规则类 GameOverRule:判断游戏是否结束的规则类 GameSuccessRule:判断游戏输赢的规则类 GameUI:游戏界面类
时间: 2023-06-23 18:08:03 浏览: 83
boat-java:一个简单的 Java 程序,使用 Boats 说明类继承
抽象类:
```java
abstract class MaterialObject{
String name; // 物品名称
int weight; // 物品重量
public MaterialObject(String name, int weight) {
this.name = name;
this.weight = weight;
}
// 其他方法
}
abstract class AbstractTransport{
String place; // 表示当前所在地点
int capacity; // 表示容量
List<MaterialObject> goods; // 货物列表
public AbstractTransport(String place, int capacity) {
this.place = place;
this.capacity = capacity;
this.goods = new ArrayList<>();
}
abstract void moveTo(String destination); // 移动到目的地
// 其他方法
}
abstract class AbstractRule{
abstract boolean judge(); // 根据规则判断结果
}
abstract class AbstractGame{
AbstractRule gameOverRule; // 游戏结束规则
AbstractRule gameSuccessRule; // 游戏输赢规则
Map<String, Object> gameData; // 游戏数据
abstract void play(); // 执行游戏
// 其他方法
}
abstract class Animal{
List<MaterialObject> recipe; // 食谱
public Animal() {
this.recipe = new ArrayList<>();
}
void addedToRecipe(MaterialObject m){ // 添加某物品进该动物的食谱
this.recipe.add(m);
}
boolean isFood(MaterialObject m){ // 判断某物品是否在它的食谱中
return this.recipe.contains(m);
}
abstract boolean canBeEat(MaterialObject m); // 判断某物品能不能被吃到
abstract void eat(MaterialObject m); // 吃某样食物
}
abstract class Plant{
// 植物相关属性和方法
}
```
Boat类:
```java
class Boat extends AbstractTransport{
public Boat(String place, int capacity) {
super(place, capacity);
}
void crossRiver(){ // 过河
// 执行过河的操作
}
void crossRiver(Person person){ // 将人运载过河
// 执行运载人的操作
}
void crossRiver(Person person, MaterialObject m){ // 将人和某样物品运载过河
// 执行运载人和物品的操作
}
void board(MaterialObject m){ // 物品m上船
// 执行上船的操作
}
void offboard(MaterialObject m){ // 物品m下船
// 执行下船的操作
}
}
```
其他类:
```java
class CrossRiverRule extends AbstractRule{
@Override
boolean judge() {
// 根据具体规则判断是否都渡过河
return false;
}
}
class ObjectExistRule extends AbstractRule{
@Override
boolean judge() {
// 根据具体规则判断物品是否都还存在
return false;
}
}
class GameOverRule extends AbstractRule{
@Override
boolean judge() {
// 根据具体规则判断游戏是否结束
return false;
}
}
class GameSuccessRule extends AbstractRule{
@Override
boolean judge() {
// 根据具体规则判断游戏输赢
return false;
}
}
class GameUI{
// 游戏界面相关属性和方法
}
```
阅读全文