问答详情
源自:9-7 Java 中的 super 的使用

定义一个有参的父类构造方法,同时子类的构造方法中写了super()了,这样情况也报错。

public Animal(int age){
this.age=age
}


pubilc Cat(){
    super();
    System.out.println("子类构造方法执行");
}

在不改变父类构造方法的前提下,子类构造方法怎么修改才能不报错?

super()括号中添加一个int的数字才能不报错,这是为什么呢

提问者:所念隔远乡 2019-04-23 21:09

个回答

  • 慕哥8082619
    2019-07-28 11:14:45
    已采纳

    父类中定义了有参构造方法之后会覆盖掉原来系统默认的无参构造方法,所以super();报错

    在原有程序基础上可以显式定义父类的无参构造方法或者super(参数);

    也可以把父类有参构造方法删了

    因为为了保证子类所有从父类继承的属性都能够正确初始化,所以java虚拟机会先调用父类的无参构造方法,只有有参构造方法的话,必须显式调用super(参数);


  • tiger爱小狄
    2019-04-30 09:44:48

    1. 不写构造方法,默认无参

    2. 只写一个有参,默认有参,且会覆盖无参,导致无参不好用

    3. 有参无参都写,默认都有,都好用


  • 不吃鱼
    2019-04-23 22:53:20

    定义了一个有参的构造方法以后,系统不在添加无参的构造方法,那super()的时候就找不到无参的构造方法,所以就报错了吧,我是这么理解的