super关键字问题。

为什么子类构造方法中既没有显式调用父类的构造方法,而父类又没有无参的构造方法的时候会编译出错呢?

这是什么原因呢?难道子类中当父类没有无参的构造方法时就不能够使用无参的构造方法了吗?

求解

Maosu
浏览 1463回答 3
3回答

JustWannaHugU

没有给类写构造函数时,系统默认有个无参的构造函数;1、一旦你手动写了构造函数,就会覆盖默认的构造函数;(JVM不会在创建默认的了)2、当主动写带参数的构造函数时,最后写个无参的构造函数,避免有时不想调有参构造函数时,可以调用无参的。子类中当父类没有无参的构造方法时就不能够使用无参的构造方法因为每个对象在构造成功以前,都必须先构造其父类你报错的原因,是因为你在子类构造方法中没有调用了父类有参的构造方法,而编译器发现,父类中也没有无参的构造方法,找不到你那个对应的构造方法了,所以它认为你的父类对象构造失败类被继承的时候,如果你没有特定的super调用父类的带参构造方法时,系统会首先调用父类的无参构造方法如果你在父类中没有写无参构造方法,那么在子类的构造方法中必须显示的调用父类中的有参数的构造方法(写在第一句)。方便请采纳!

JustWannaHugU

同学你好,这是java的强制语法规则

ziom

子类的构造默认会调用父类的无参构造。而无参构造默认是有的,但是当你手动定义了有参构造时,无参构造就不会有了,此时需要显式地写出无参构造
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java