[英]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.