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

来源:9-7 Java 中的 super 的使用

所念隔远乡

2019-04-23 21:09

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


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

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

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

写回答 关注

3回答

  • 慕哥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()的时候就找不到无参的构造方法,所以就报错了吧,我是这么理解的

    Andrew... 回复所念隔远乡

    因为你super()这样写的是无参的Animal类,你super(10);这样写的就是有参的Animal类,里面的10就是你设置的Animal age的大小

    2019-09-20 08:48:21

    共 2 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530642 学习 · 6091 问题

查看课程

相似问题