我了解到,在构造对象时,无论是否在构造函数中编写它,都会调用super()
。但我注意到在某些代码中,super()
方法被显式调用。我应该在构造函数中隐式还是显式调用super()
?有什么不同?
答案 0 :(得分:3)
我应该在构造函数中隐式还是显式调用super()方法?有什么不同?
调用super()
与否之间没有语义差异,也没有性能差异。
这纯粹是一个美容问题。自己决定......或者选择项目采用的风格指南所说的内容(如果有的话)。
另一方面,如果您需要调用的super
有参数,那么它 与您明确调用它有关。如果超类没有no-args构造函数,那么就不能显式或隐式地使用super()
。
答案 1 :(得分:2)
如果讨论围绕无参数 super()
构造函数,则没有区别。
如果没有显式调用,Java会为所有基类构造函数隐式调用super()
。记住Java总是只调用超类无参数构造函数。
在某些情况下,作为开发人员,您可能需要调用基于参数的超级构造函数。在这些情况下,您必须显式调用基于参数的超级构造函数,例如:super(arg1, arg2, ...)
IMO,避免调用无参数super()
构造函数,因为它既不会对逻辑产生任何影响,也不会提高可读性。