繁体   English   中英

找不到合适的构造函数

[英]No suitable Constructor Found

这是我的代码,我正在尝试将参数从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();
    }
}

看看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) {

 }

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

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

this("Fluppy", 4);

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

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

}

打电话给我的第一件事

Cat c= new Cat("Tom");

它期望您的Cat类具有一个不包含您的类的单个参数构造函数,因此请在Cat类中创建一个这样的单个参数构造函数:

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

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

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

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

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

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

public Cat(String catty) {
        //  initialise
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM