所念隔远乡
2019-04-23 21:09
public Animal(int age){ this.age=age } pubilc Cat(){ super(); System.out.println("子类构造方法执行"); }
在不改变父类构造方法的前提下,子类构造方法怎么修改才能不报错?
super()括号中添加一个int的数字才能不报错,这是为什么呢
父类中定义了有参构造方法之后会覆盖掉原来系统默认的无参构造方法,所以super();报错
在原有程序基础上可以显式定义父类的无参构造方法或者super(参数);
也可以把父类有参构造方法删了
因为为了保证子类所有从父类继承的属性都能够正确初始化,所以java虚拟机会先调用父类的无参构造方法,只有有参构造方法的话,必须显式调用super(参数);
不写构造方法,默认无参
只写一个有参,默认有参,且会覆盖无参,导致无参不好用
有参无参都写,默认都有,都好用
定义了一个有参的构造方法以后,系统不在添加无参的构造方法,那super()的时候就找不到无参的构造方法,所以就报错了吧,我是这么理解的
Java入门第二季 升级版
530642 学习 · 6091 问题
相似问题