如何编写无参数构造方法?程序报错问题求助
问题解决方法
问题根源
你当前的CharacteristicsOfTheDog类只定义了无参构造方法,而Dog类的main方法里却尝试调用带两个参数的构造方法实例化对象——Java编译器不会为显式定义了构造方法的类自动生成其他构造方法,因此会抛出编译错误。
下面提供两种符合你需求的解决方案:
方案1:同时保留无参构造和带参构造
既满足类包含无参构造的要求,又支持通过参数初始化对象属性。修改CharacteristicsOfTheDog类如下:
public class CharacteristicsOfTheDog { int size = 0; int kilogram = 0; // 无参构造方法(保留需求) public CharacteristicsOfTheDog() { } // 添加带参构造方法,支持外部传值初始化 public CharacteristicsOfTheDog(int size, int kilogram) { this.size = size; this.kilogram = kilogram; } public double getSize() { return size; } public double getKilogram() { return kilogram; } public String toString() { return "The Dog is " + getSize() + " cm and " + getKilogram() + " kg"; } }
Dog类的代码无需修改,直接运行即可正常输出:The Dog is 20.0 cm and 40.0 kg。
方案2:仅使用无参构造,通过Setter方法赋值
如果要求只能保留无参构造,需要给类添加属性的Setter方法,然后在实例化后手动赋值:
第一步:修改CharacteristicsOfTheDog类,添加Setter方法
public class CharacteristicsOfTheDog { int size = 0; int kilogram = 0; // 仅保留无参构造方法 public CharacteristicsOfTheDog() { } public double getSize() { return size; } public double getKilogram() { return kilogram; } // 添加Setter方法用于修改属性值 public void setSize(int size) { this.size = size; } public void setKilogram(int kilogram) { this.kilogram = kilogram; } public String toString() { return "The Dog is " + getSize() + " cm and " + getKilogram() + " kg"; } }
第二步:修改Dog类的main方法,实例化后赋值
public class Dog { public static void main(String[] args) { // 无参构造实例化 CharacteristicsOfTheDog Dog1 = new CharacteristicsOfTheDog(); // 通过Setter赋值 Dog1.setSize(20); Dog1.setKilogram(40); System.out.println(Dog1.toString()); } }
运行后同样会输出预期结果。
内容的提问来源于stack exchange,提问作者Tila tila
相关产品推荐
相关产品推荐

