java - 最后调用 super

标签 java android overriding

我真的对人们在覆盖方法中使用 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/

相关文章:

c++ - 可以覆盖(隐藏)一个非虚方法但仍然从子类显式调用它吗?

java - Spring Bean 总是 POJO 吗?

java - 我需要删除 ArrayList 中可能出现多次的特定元素

android - 如何在 Parse 中比较查询当前日期

android - React Native博览会上传:ios issue

c++ - 派生类的内联函数能否覆盖基类的非内联函数?

java - Java 中重写/隐藏对象类 equals() 方法

java - 如何在 Java 中使用 DES(CBC 模式)加密序列化对象?

java - 为什么带有前导零的整数文字会被奇怪地解释?

java - 如何在 Java (Android) 中生成正弦扫频