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