我了解到,在构造对象时super()
,无论您是否在构造函数中编写它,都会调用它。但我注意到在某些代码中,该super()
方法被显式调用。我应该super()
在构造函数中隐式还是显式调用?有什么不同?
问问题
1317 次
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 回答