何时调用继承方法的超级关键字

时间:2014-11-20 12:18:29

标签: java android super

我应该何时致电super.onResume?有时它位于onResume主体的最后一行,有时位于第一行。有什么不同吗?

3 个答案:

答案 0 :(得分:2)

这实际上取决于用例。

例如:如果主逻辑在超类中,并且它取决于预期由子类提供的一些参数。在这种情况下,您将首先设置这些参数,然后调用super。 在其他情况下,您的父类可能正在设置一些基础结构,如设置一些数据库连接或创建远程调用的代理。并且您在子类实现中使用它。在这种情况下,首先您将超级方法称为代码的第一行。

一个非常好的用例是将超级构造函数作为子类中第一行构造函数调用,以使超类能够设置子类可能引用的所有基础结构。

答案 1 :(得分:1)

我假设您指的是Android的Activity生命周期方法onResume(基于Android标记)。在这种情况下,你应该首先在方法的第一行调用它。

这可确保正确初始化/恢复/停止活动(取决于您覆盖的生命周期方法)。

此示例来自Android guide

@Override
public void onResume() {
    super.onResume();  // Always call the superclass method first

    // Get the Camera instance as the activity achieves full user focus
    if (mCamera == null) {
        initializeCamera(); // Local method to handle camera init
    }
}

答案 2 :(得分:0)

这取决于很多因素。在某些情况下,您需要在调用super方法之前保存一些值。对于onResume(),最好在第一行调用它,但它取决于它。在其他情况下,您甚至可能不会根据某些计算或布尔值调用super方法。例如,最常见的情况可能是super.onBackPressed();如果我不希望用户能够在应用流程中向后导航,我就不会打电话。它也可以在onBackPressed()方法之外调用,以模拟后退按钮按下。所以,是的,这取决于具体情况。希望这很有帮助