我在阅读“Hello,Android”时发现了一个问题。
当他在Activity中实现onCreate()时,它看起来像:
{ super.onCreate(..); ... ... }
但onSizeChanged()看起来像:
{ ... ... super.onSizeChange(); }
他并没有在onDraw()中调用super。
我应该把super call语句放在哪里?我在哪里可以找到android的文档中的答案?
答案 0 :(得分:2)
在子类中的任何重写方法中,super.methodname()的位置通常是该方法中的第一个东西(如onCreate()
中所示)。但是,有时您需要在调用super之前执行其他步骤,因此您可以在onSizeChanged()
方法中执行此操作。超级呼叫由此标准决定,而不是由任何其他规则确定。
答案 1 :(得分:2)
在很多情况下,当你考虑在重大方案中你的被覆盖功能发生在哪里时,就会得到一个有用的答案。
如果你正在调用一些初始化程序,那么super
调用应该(usuall)在开头,因为你希望在尝试初始化子类之前初始化基类。
如果你正在调用一些表现为清理程序的东西,那么super
调用应该(通常)结束,因为你想要在超级类清理之前清理所有的部分他们自己了。
对于在任意时间发出的呼叫,它将取决于被覆盖呼叫的性质。如果你想在之前做一些框架进行计算,那么你可以影响他们的结果,你最后会想要super
调用。如果您希望将计算基于超类的计算,则super
调用应该在开头。
简而言之,对此没有固定的规则:它取决于您所覆盖的特定方法的功能。