我需要帮助为我的代码创建一个 setter 方法。我已经为我的两个字符串值创建了两个 setter 方法,但我 A) 不确定它们是否正确实现,以及 B) 不确定如何调用它们以便它们出现在屏幕上。本质上,我希望能够只调用我的 lion 和 hippo 类,并让它们已经有了名称和大小,而不必通过插入类似的东西直接在我的 main 函数中实现它们 河马 h = new Hippo("Tom", "42")
package game2;
public class Game2 {
public static void main(String[] args) {
//I am getting the error here, what I want to do is figure out how to
//get this to work and then declare a name and size for the animal
Hippo h = new Hippo();
Lion l = new Lion();
}
}
package game2;
public abstract class Animal {
private String name;
private String Size;
public String getName() {
return name;
}
public String getSize() {
return Size;
}
public void setName(String name) {
name = "Tom";
}
public void setSize(String name) {
name = "42";
}
public Animal(String theName, String theSize) {
name = theName;
Size = theSize;
}
}
package game2;
public class Hippo extends Animal {
public Hippo(String name, String Size) {
super(name, Size);
}
}
package game2;
public class Lion extends Animal{
public Lion(String name, String Size) {
super(name, Size);
}
}
最佳答案
请记住,当您自己实现构造函数时,您是在重载默认构造函数。所以你需要传递两个参数。
实例化时没有传递构造函数的参数:
Hippo h = new Hippo();
Lion l = new Lion();
因为您的类构造函数需要两个参数。
public Hippo(String name, String Size) {
super(name, Size);
}
和:
public Lion(String name, String Size) {
super(name, Size);
}
解决方案:
要么你可以在实例化对象时传递参数:
Hippo h = new Hippo("name", "33");
Lion l = new Lion("name", "22");
或者您需要为这些实现重载构造函数。
关于Java 原因 : actual and formal argument lists differ in length,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44428980/