我应该在Android事件处理程序中将超级调用放在哪里?

时间:2011-04-14 01:51:46

标签: android super

我在阅读“Hello,Android”时发现了一个问题。

当他在Activity中实现onCreate()时,它看起来像:

{
super.onCreate(..);
...
...
}

但onSizeChanged()看起来像:

{
...
...
super.onSizeChange();
}

他并没有在onDraw()中调用super。

我应该把super call语句放在哪里?我在哪里可以找到android的文档中的答案?

2 个答案:

答案 0 :(得分:2)

在子类中的任何重写方法中,super.methodname()的位置通常是该方法中的第一个东西(如onCreate()中所示)。但是,有时您需要在调用super之前执行其他步骤,因此您可以在onSizeChanged()方法中执行此操作。超级呼叫由此标准决定,而不是由任何其他规则确定。

答案 1 :(得分:2)

在很多情况下,当你考虑在重大方案中你的被覆盖功能发生在哪里时,就会得到一个有用的答案。

如果你正在调用一些初始化程序,那么super调用应该(usuall)在开头,因为你希望在尝试初始化子类之前初始化基类。

如果你正在调用一些表现为清理程序的东西,那么super调用应该(通常)结束,因为你想要在超级类清理之前清理所有的部分他们自己了。

对于在任意时间发出的呼叫,它将取决于被覆盖呼叫的性质。如果你想在之前做一些框架进行计算,那么你可以影响他们的结果,你最后会想要super调用。如果您希望将计算基于超类的计算,则super调用应该在开头。

简而言之,对此没有固定的规则:它取决于您所覆盖的特定方法的功能。