好的问题是,NetBeans说第二个已经定义了。这三个是我在顶部的构造函数,如果set或get方法是它的错误,则列出整个程序。所以要明确我在谈论
public Dog(String initialName) public Dog(String initialBreed) 公狗(double initialWeight)
错误显示在公共Dog(String initialBreed)上。我是否滥用了重载方法?此外,我必须使用它必须的重载方法。
package dog;
import java.util.*;
public class Dog
{
// instance variables
private String name;
private String breed;
private double weight;
public Dog( )
{
name = "no name";
breed = "no breed";
weight = 0.0;
}
public Dog(String initialName)
{
name = initialName;
breed = "no breed";
weight = 0.0;
}
public Dog(String initialBreed){
name = "no name";
breed = initialBreed;
weight = 0.0;
}
public Dog(double initialWeight){
name = "no name";
breed = "no breed";
weight = initialWeight;
}
public void SetDog(String newName, String newBreed, double newWeight)
{
name = newName;
breed = newBreed;
if (newWeight <= 0)
System.out.println("Error: Negative weight.");
else
weight = newWeight;
}
public void setName(String newName){
name = newName;
}
public void setBreed(String newBreed){
breed = newBreed;
}
public void setWeight(double newWeight){
weight = newWeight;
}
public double getWeight(){
return weight;
}
public String getName(){
return name;
}
public String getBreed(){
return breed;
}
}
答案 0 :(得分:3)
问题是你的两个构造函数采用相同的参数:
public Dog(String initialName)
public Dog(String initialBreed){
他们都采取string
。您不能拥有两个具有完全相同名称和参数的方法。
根据我的想法,您可能需要一个构造函数来获取所有这三个参数:
public Dog(String initialName, String initialBreed, double initialWeight){
答案 1 :(得分:0)
由于两个构造函数接收到一个相同类型的参数(String
),因此编译器无法区分它们。也许你可以定义一个新的构造函数,它考虑到其中一个参数可能为null,例如:
public Dog(String initialBreed, String initialName) {
name = initialName != null ? initialName : "no name";
breed = initialBreed != null ? initialBreed : "no breed";
weight = 0.0;
}