为了账号安全,请及时绑定邮箱和手机立即绑定

3-7中最后一条,我加上了super();仍然报错

视频3-7最后一条:如果子类构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译出错

但我加上了super();仍然报错

//父类
public class Animal{
    public int age;
    public Animal(int age){
        this.age = age;
    }
}

//子类
public class Dog extends Animal{
    public Dog(){
        super();          //这里报错
        System.out.println("Dog类构造方法执行了");
    }
}

//main函数
public class Initail {
    public static void main(String[] args) {
    Dog dog = new Dog();
    }
}


正在回答

4 回答

super()意思是调用父类的无参构造方法,而当父类中有有参构造方法,而无参构造方法又没有写出时,系统是不会默认有无参构造方法的。你可以把super()改成super(int age)或者在父类中定义无参构造方法

0 回复 有任何疑惑可以回复我~

你的父类public Animal(int age){}这是一个有参的,子类的super()调用的是无参的,JAVA中如果有一个有参的构造方法,就不会默认一个无参的,  就好比你走在路上刮着风吹着你的脸 (这好比一个默认的无参的);然后你拿出个一个伞挡住的风,这时风就吹不到你的脸,(伞就当于一个有掺的方法)吹不到你的脸就相当于没有风啦,也就没有无参方法啦,super()调不到无参的方法,所以出错啦

0 回复 有任何疑惑可以回复我~

super();是调用父类的无参的方法,你的父类方法是有参的,所以super();中的是不是要加入参数哦。

0 回复 有任何疑惑可以回复我~

一般来说父类中最好两个构造方法都写出来,有参无参都写就不会出现问题了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

3-7中最后一条,我加上了super();仍然报错

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信