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

子类构造函数必须调用父类的构造函数,但是如果构造函数有多个到底是调用哪个呢?如果子类有显式调用父类构造函数,是不是就是说父类不管有没有无参构造函数都不会报错吗?

正在回答

4 回答

1.如果子类未显示调用父类构造函数,则默认只会调用父类无参的构造函数

2.如果子类有显式调用父类构造函数,则只会调用指定的父类构造函数,父类可以没有无参构造函数

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

初见4071

老师你的意思是说子类里只要是有构造方法,那就是默认调用父类无参的构造方法么?那要是父类没有构造方法,系统会默认么??
2014-09-24 回复 有任何疑惑可以回复我~

1.当子类中隐式调用父类的构造方法,(即不写super();),则默认调用父类中的无参构造方法

2.当子类中隐式调用父类的构造方法,而父类中没有无参的构造方法,如只有有参的构造方法,则系统会报错

3当我们在创建父类对象,在main方法中用的是有参的的构造即:Animal a=new Animal(10);

在父类中我们创建一个有参的构造方法:

public Animal(int age1){

System.out.println("父类的构造方法执行了!!!!!");

System.out.println(age1);

在子类中我们调用super(10);

当程序运行时,我们调用的就是父类中有参的构造方法了。

最后纠正一下,java中只有方法,没有函数的叫法。


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

3.当父类中写了有参构造函数,则父类默认的无参构造函数被覆盖。此时子类必须显式在构造函数里调用父类的有参构造函数【super(参数)放构造函数第一句】。

建议:当父类有参构造函数时,建议写上无参构造函数。

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

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       529961    人
  • 解答问题       6086    个

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

进入课程
意见反馈 帮助中心 APP下载
官方微信