Java:当默认值已经存在时,为什么有人会编写super()?

3
为什么会有人写这个呢?
super(); //(parameterless) 

在子类的构造函数中明确调用父类的构造函数,因为如果没有这个调用,那么默认的无参数父类构造函数仍然会被调用。

2
调用 super() 构造函数没有实际用途。我使用它只是为了提醒自己已经调用了超类构造函数,以便我不会忘记(用于调试等...)。 - ParkerHalo
@ParkerHalo 那确实是一个实用的用途 :) - davmac
3个回答

2

我通常使用IDE(例如Eclipse)生成构造函数,它会自动放置该调用语句,这可能是其中一种情况。


是的,这通常是来自Eclipse(某些版本)的代码风格。 - Joop Eggen

2

没有参数的super()构造函数只是一系列具有不同参数的super构造函数中的一个部分,您可以调用这些构造函数。

super(int, String)
super(int)
super()            // for completeness

即使有些团队可能因为样式原因需要调用它,但是调用无参super()并没有实现任何功能,只会增加代码冗余。 (有些人喜欢这样做。)

0

明确(否则隐含的)控制流程。

这样的代码作为一个提醒,超类默认构造函数实际上会在派生类构造函数的开始处被调用。阅读代码的人将有一个视觉标记,提醒他们在想知道实例构造时发生了什么时也要检查超类构造函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接