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

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

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


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

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

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

正在回答

3 回答

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

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

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

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


0 回复 有任何疑惑可以回复我~
  1. 不写构造方法,默认无参

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

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


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

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

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

所念隔远乡 提问者

说明super();这样写是无参,但是super(10);这样写的话就不会报错了
2019-04-23 回复 有任何疑惑可以回复我~
#2

AndrewOVO 回复 所念隔远乡 提问者

因为你super()这样写的是无参的Animal类,你super(10);这样写的就是有参的Animal类,里面的10就是你设置的Animal age的大小
2019-09-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

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