java reason:实际和形式参数列表的长度不同

时间:2017-06-08 07:12:05

标签: java

我需要帮助为我的代码创建一个setter方法。我已经为我的两个字符串值创建了两个setter方法,但我是A)不确定它们是否正确实现,并且B)不确定如何调用它们以便它们出现在屏幕上。基本上我希望能够只调用我的狮子和河马类,并让它们已经有一个名称和大小,而不必通过插入类似的东西直接在我的主函数中实现它们  Hippo h =新河马(" 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);
    }
}    

5 个答案:

答案 0 :(得分:1)

请记住,当您自己实现构造函数时,您将重载默认构造函数。所以你需要传递两个参数。

实例化时,您没有传递构造函数的参数:

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

答案 1 :(得分:0)

您的代码未编译,因为您没有使用正确的构造函数, Hippo和Lion的构造函数都需要两个字符串参数,因此您必须执行以下操作:

Hippo h = new Hippo("myHippo", "220");
Lion l = new Lion("Simba", "400");

答案 2 :(得分:0)

new Hippo()/ Lion()正在调用你没有的功能(空构造函数)

你有功能Hippo(字符串名称,字符串大小)需要2个参数

尝试新的河马(&#34; Billy&#34;,&#34; 10&#34;)

答案 3 :(得分:0)

Vue.component('search-box', { template: '#search-box-template', props: ['who'] }) var vm = new Vue({ el: '#root', data: { who: ['a', 'b'] } })<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.3/vue.js"></script> <div id="root"> who as seen by the parent: {{who}} <search-box v-bind:who="who"></search-box> </div> <template id="search-box-template"> <div> who as seen by the child: {{who}} <button v-on:click="who.push('x')">modify who from within the child</button> </div> </template>的构造函数都需要两个字符串参数 - 名称和大小。调用相应的构造函数时,需要传递它们。 E.g:

Hippo

答案 4 :(得分:0)

如果要在创建动物后决定名称和大小,则需要无参数构造函数。目前,所有构造函数都要求您传递2个参数。写一个!

以下是一个例子:

public Hippo() {
    setSize(insert default size here);
    setName(insert default name here);

}

然后,您可以像这样创建一个河马:

Hippo hippo = new Hippo();
hippo.setName("Tom");