3

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

4

2 回答 2

4

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

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

这纯粹是一个外观问题。下定决心……或者按照项目采用的风格指南所说的(如果有的话)。


另一方面,如果super您需要调用具有参数,那么显式调用它确实很重要。如果超类没有无参数构造函数,那么您就不能super()显式或隐式地使用 。

于 2013-09-12T02:43:32.630 回答
4

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

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

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

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

于 2013-09-12T03:32:00.773 回答