Java 原因 : actual and formal argument lists differ in length

标签 java

我需要帮助为我的代码创建一个 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"); 

或者您需要为这些实现重载构造函数。

阅读this to learn more about constructor overloading .

关于Java 原因 : actual and formal argument lists differ in length,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44428980/

相关文章:

java - 如何使用自定义 JButton 在 Java (Swing) 中创建 JOptionPane.showOptionDialog 框?

java - 在 Java 中提取媒体属性或将 MediaInfo 安装到 Eclipse 中

Java 客户端通过 TCP 连接由异步事件(xml 消息)驱动

java - Spring Data Elasticsearch不会将空值写入插入的文档

java - 用于 Selenium WebDriver 的 PhantomJS 2.5.0-beta 在 Linux 中不工作

java - 如何找到第二个和第三个正斜杠之间的字符串?

java - 类型的通用方法

java - Docker:运行Oracle并执行脚本后启动Tomcat

java - 如何在JAVA中使用线程频繁更新JTable?

java - 在 VSCode 中使用 Formatter 写入文件