我真的对人们在覆盖方法中使用 super 的方式感到困惑。 喜欢之间有什么不同
@Override
protected void onResume() {
// some logic here
super.onResume();
}
和
@Override
protected void onResume() {
super.onResume();
// some logic here
}
最后我们调用super()时有没有做任何预处理,因为一般我们调用super来初始化父构造函数。
两种类型的性能差异。
最佳答案
首先,方法 中根本不允许使用纯 super()
- 仅在构造函数中。我假设您实际上是指 super.someMethod()
一个合适的方法。
Does it perform any pre-processing when we call super() at the end , because generally we call super to initialize parent constructor .
在方法中使用 super
与在构造函数中使用它有些不同。
在构造函数中,super
(或this
)需要成为第一个语句(如果存在,带有隐式super()
否则)并且它只能调用构造函数。
在方法中,使用super.someMethod()
只是调用someMethod
的父类(super class)实现。您可以从任何 方法调用它(此时您不必覆盖someMethod
)并且可以在方法中的任何位置调用它。它在您调用它时被调用,它只是避免了对覆盖实现的多态调用。
所以基本上在哪里 - 以及是否 - 调用它取决于你想要的效果。在某些情况下,您可能希望在您自己的自定义行为之前调用同一方法的父类(super class)实现,而在某些情况下,您可能希望在您自己的自定义行为之后调用它.
关于java - 最后调用 super,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17329528/