找不到合适的构造函数

时间:2014-09-12 07:38:34

标签: java implements

这是我的代码,我正在尝试将参数从main传递给cat类,但是它说没有构造函数无法弄清楚该怎么做一点帮助将不胜感激。

public class Cat extends Animal implements Pet {

    public String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Cat(String name, int legs) {
        super(4);
        this.name = name;
    }

    public Cat() {
        this("Fluppy"); //ERROR OVER HERE
    }

    @Override
    public void play() { //THIS METHOD IS OVERRIDDEN FROM PET INTERFACE
        System.out.println(name+"Likes to play with string");
    }

    @Override
    public void eat() {   /*THIS METHOD IS OVERRIDDEN FROM ANIMAL ABSTRACT METHOD.*/
        System.out.println("Cats likes to eat spiders and fish");
    }
}

和主要课程

public class PetMain {

    public static void main(String[] args) {

        Animal a;
        Pet p;
        Cat c= new Cat("Tom"); //IM GETTING THE ERROR OVER HERE.
        c.eat();
        c.walk();
        c.play();
    }
}

4 个答案:

答案 0 :(得分:1)

Cat

中查看您的构造函数
public Cat(String name, int legs) { // accept String and int constructor
 super(4);
 this.name = name;
}

public Cat() {  // no argument constructor 
 this("Fluppy"); 
}

new Cat("String")

没有匹配项

您可以添加新的构造函数

public Cat(String anyThing) {

 }

答案 1 :(得分:1)

尝试使用带有两个参数的正确构造函数

Cat c= new Cat("Tom", 4); 

this("Fluppy", 4);

或为一个参数创建一个新的构造函数,如

public Cat(String name) {
  this (name, 4);

}

答案 2 :(得分:1)

当你打电话给

时,首先要做的事情
Cat c= new Cat("Tom");

它希望你的Cat类有一个你的类不包含的参数构造函数,所以在你的Cat类中创建一个单独的参数构造函数

public Cat(String str) {
  // your logic
}

其次this("Fluppy"); //ERROR OVER HERE

如果您了解constructor chaining,那么您就不会这样做了。当你想从一个构造函数中调用同一个类的另一个构造函数时,通常会使用this(),因为你从默认构造函数中调用了一个参数化的构造函数,因为一个参数化的构造函数不存在它会给你编译错误

答案 3 :(得分:0)

您正试图在以下位置重载构造函数:

public Cat() {
    this("Fluppy"); //ERROR OVER HERE
}

但是调用是针对具有一个String参数的构造函数。您没有带有一个String参数的构造函数,因此您尝试添加时会出错。

public Cat(String catty) {
        //  initialise
    }