应该隐式还是明确地调用super()?

时间:2013-09-12 02:34:48

标签: java constructor super

我了解到,在构造对象时,无论是否在构造函数中编写它,都会调用super()。但我注意到在某些代码中,super()方法被显式调用。我应该在构造函数中隐式还是显式调用super()?有什么不同?

2 个答案:

答案 0 :(得分:3)

  

我应该在构造函数中隐式还是显式调用super()方法?有什么不同?

调用super()与否之间没有语义差异,也没有性能差异。

这纯粹是一个美容问题。自己决定......或者选择项目采用的风格指南所说的内容(如果有的话)。


另一方面,如果您需要调用的super有参数,那么它 与您明确调用它有关。如果超类没有no-args构造函数,那么就不能显式或隐式地使用super()

答案 1 :(得分:2)

如果讨论围绕无参数 super()构造函数,则没有区别。

如果没有显式调用,Java会为所有基类构造函数隐式调用super()。记住Java总是只调用超类无参数构造函数。

在某些情况下,作为开发人员,您可能需要调用基于参数的超级构造函数。在这些情况下,您必须显式调用基于参数的超级构造函数,例如:super(arg1, arg2, ...)

IMO,避免调用无参数super()构造函数,因为它既不会对逻辑产生任何影响,也不会提高可读性。