不确定这里的问题是什么,但我试图让这个程序编译,我不能。我需要这个来创造并让狗,拉布拉多和约克都能说话。我给出的提示是在子类的构造函数中缺少某些东西,但我没有看到它。我一直得到的错误是“类Dog中的构造函数狗不能应用于给定的类型”。我是Java的新手,所以你能给我的任何帮助都会很棒。提前谢谢!
package dogtest;
public class DogTest {
public static void main(String[] args) {
Dog dog = new Dog("Spike");
System.out.println(dog.getName() + " says " + dog.speak());
Labrador boop = new Labrador(name, color);
Yorkshire beep = new Yorkshire(name);
}}
package dogtest;
public class Dog {
protected String name;
public void Dog(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public String speak()
{
return "Woof";
}}
package dogtest;
public class Labrador extends Dog{
private String color;
private static int breedWeight = 75;
public Labrador(String name, String color)
{
this.color = color;
}
public String speak()
{
return "WOOF";
}
public static int avgBreedWeight()
{
return breedWeight;
}}
package dogtest;
public class Yorkshire extends Dog {
public Yorkshire(String name)
{
super(name);
}
public String speak()
{
return "woof";
}}
答案 0 :(得分:1)
如注释中所述,构造函数与方法类似,它应该与您的类名Dog
具有相同的名称(您正确地执行了此部分),但它们没有返回类型他们的签名。因此,为了使具有String
参数的构造函数更改
public void Dog(String name) // this is only a method with the same name as the class
{
this.name = name;
}
进入
public Dog(String name) // this is a real constructor since doesn't have a return type
{
this.name = name;
}
在将上述方法更改为构造函数之前,出现以下错误:
“类Dog中的构造函数Dog不能应用于给定类型”
正在发生,因为当您未明确指定构造函数时,编译器将添加默认的 no-arg 构造函数。然后编译器会给你这个错误,因为它找不到带有String
参数的构造函数。
答案 1 :(得分:0)
我修复了代码的编译错误
将字符串转换为main方法中的名称和颜色参数
Labrador boop =新拉布拉多(“名字”,“颜色”); Yorkshire beep = new Yorkshire(“name”);
我没有将包和导入添加到代码
G