我刚刚注意到,我在工作中分配的一个非常大的项目的代码库中,一个特定的类没有构造函数。但是它的子类调用了super()
。
有人可以解释一下,当子类调用super()
但父类没有构造函数时会发生什么吗?
(我可以猜测效果就像调用一个空构造函数,但我想知道是否还有其他事情正在幕后进行)。
我刚刚注意到,我在工作中分配的一个非常大的项目的代码库中,一个特定的类没有构造函数。但是它的子类调用了super()
。
有人可以解释一下,当子类调用super()
但父类没有构造函数时会发生什么吗?
(我可以猜测效果就像调用一个空构造函数,但我想知道是否还有其他事情正在幕后进行)。
在执行任何语句之前,子类构造函数总是首先调用其父类构造函数。如果父类中没有构造函数,则无论您是否显式调用它,Java编译器都会在代码中添加super()调用,并由JVM执行。
super()
将调用该默认构造函数。如果子类调用super(),但父类没有构造函数,那么会发生什么?
如果父类没有任何构造函数,则Java编译器将调用其默认构造函数。如果您不想调用默认构造函数,则可以在该类中创建自己的空构造函数。