您是否将 super() 调用放在构造函数的开头?

2023-12-20

这是一个关于编码风格和推荐实践的问题:

正如问题答案中所解释的不需要将 super() 放在构造函数中吗? https://stackoverflow.com/questions/2054022/unnecessary-to-put-super-in-constructor,如果您为一个应该使用超类中的默认(无参数)构造函数的类编写一个构造函数,您可以调用super()在构造函数的开头:

public MyClass(int parm){
  super(); // leaving this out makes no difference
  // do stuff...
}

但您也可以省略通话;在这两种情况下,编译器都会表现得好像有 super() 调用一样。

那么,您是否将调用放入构造函数中?

一方面,人们可能会争辩说,包括super()让事情变得更加明确。 OTOH,我总是不喜欢编写冗余代码,所以我个人倾向于将其省略;然而,我确实经常在其他人的代码中看到它。

你有什么经历?您对其中一种方法有疑问吗?您是否有规定一种方法的编码指南?

BTW:一个相关问题(仅供参考):

当没有其他构造函数时,是否有理由显式编写默认构造函数? https://stackoverflow.com/questions/2291856/is-there-a-reason-to-explicitly-code-a-default-constructor-when-there-are-no-othe


我不写super()出于同样的原因,我不会编写不必要的转换:

它会在不提供任何附加信息的情况下向代码添加噪音(编译器也不提供任何附加信息)nor给正在阅读我的代码的开发人员)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您是否将 super() 调用放在构造函数的开头? 的相关文章

随机推荐