运行时错误以及我应该在 class Pet 中构建什么构造函数?

Runtime error and what constructor should I have to build in class Pet?

据我了解,Goat class 对代码没有问题, 我想从一个新对象中分配前两个元素,但我不确定为什么会出现运行时错误

class Pet {
    public String name;
    public boolean indoor;

    public Pet(String name, Boolean indoor) {
        this.name = name;
        this.indoor = indoor;
    }


    public String toString(){
        return name + ", " + indoor; 
    }
}

class Goat extends Pet {
    public int age;
    public String diet;
    public Goat(String name, boolean indoor, int age, String diet) {
         super(name, indoor);
         this.age = age;
         this.diet = diet;
    }

这里是测试代码和报错

}

抛出错误是因为 Pet class 构造函数需要布尔值,而 Goat class 构造函数正在传递布尔值。编译器虽然在编译代码,但是在运行时java是无法找到boolean类型构造函数的。因此,不会抛出任何方法错误。

正确的代码是

class Pet {
    public String name;
    public boolean indoor;

    public Pet(String name, boolean indoor) {
        this.name = name;
        this.indoor = indoor;
    }


    public String toString(){
        return name + ", " + indoor; 
    }
}

class Goat extends Pet {
    public int age;
    public String diet;
    public Goat(String name, boolean indoor, int age, String diet) {
         super(name, indoor);
         this.age = age;
         this.diet = diet;
    }