gpt4 book ai didi

java - 需要将动物可以吃的食物表示为字符串数组,但有食物对象

转载 作者:行者123 更新时间:2023-12-01 10:46:09 25 4
gpt4 key购买 nike

我希望我能清楚地解释这一点。我有一个动物(抽象类),它有一个 eats 属性,这意味着是一个字符串数组,表示每个动物可以吃什么。这就是我的动物类的样子。

public abstract class Animal {
String[] eats;

public Animal (String[] eats) {
this.eats = eats;
}
}

我还有一个狮子类(class),它扩展了我的动物类(class)。规范告诉我,我的狮子会吃 celery 和牛排。我的 lion 类中的构造函数如下(它有一个编译错误):

public Lion(String[] eats) {
this.eats = steak, celery;
}

我在食物类中创建了这两个食物对象,每个单独的食物项目都有指定的健康值和废物值。这是我的食物课:

public class Food {
int healthGain;
int wasteGain;
public static void main(String[] args) {
Food steak = new Food();
steak.healthGain = +3;
steak.wasteGain = 4;
//same but for celery instead
}
}

我真的很困惑,因为我应该为每种动物吃的食物提供一系列字符串,但我创建了食物对象而不是字符串(规范没有要求我这样做,我只是看不到另一种方法它)。有一个更好的方法吗?或者我可以改变我的代码以使其编译吗?无论哪种方式,每种动物吃的食物都必须是一系列字符串。提前致谢。

最佳答案

你的狮子可能看起来像这样:

class Lion extends Animal{

public Lion() {
super(new String[]{"steak", "celery"});
}

//...

}

请注意,我们实际上不需要在构造函数中提供任何参数,因为我们已经知道狮子吃什么食物,并且每次创建 Lion 对象时都要求用户提供此信息是很糟糕的。

<小时/>

顺便说一句,如果您想避免重复此 new String[]{...} 代码,请尝试更改您的 Animal 构造函数以使用 varargs

public Animal (String... eats) {
// ^^^
this.eats = eats;
}

这仍然允许您将 eats 视为字符串数组 (String[]),因此您可以将其分配给 this.eats没有任何问题,但现在 Lion 构造函数看起来像:

public Lion() {
super("steak", "celery");
}

关于java - 需要将动物可以吃的食物表示为字符串数组,但有食物对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34166802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com