2011-04-14 51 views
1

在阅读“你好,Android”时我发现问题。我应该在Android事件处理程序中将超级调用放在哪里?

当他在活动中实现的onCreate(),它看起来像:

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

但onSizeChanged()看起来像:

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

而且他不打电话的onDraw超( )。

我应该在哪里放置超级通话声明?我在哪里可以在android文档中找到答案?

回答

2

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

+0

我知道这个标准。但是,如何确定在调用super之前或之后执行一个步骤? super.method()之前不能做什么事情? – 2011-04-14 02:05:02

+0

如果您需要进行一些清理或资产加载,则可以在设计中采用onSizeChanged()方法,然后在超级调用之前执行该方法。但是,如果这种清理工作更适合于家长班,那么您就可以将其提高。看到不同?从某种意义上讲,在调用super之前,在将它们写入子类onSizeChanged()方法之前,总是认为这些步骤在父类中是否更好。你可能正在看硬性规定,但没有任何规定。软件开发中有通用的指导原则,适用于“最”的时代,并非总是如此。 – omermuhammed 2011-04-14 02:11:50

2

在很多情况下,当您考虑在重大计划中发生重写的功能时,这个问题的有用答案会出现。

如果您打电话的行为是初始化程序,那么super调用应该开始(usuall),因为您希望在尝试初始化子类之前初始化基类。

如果你打电话的行为是一个清理程序,那么super调用应该(通常)结束,因为你想在超类自行清理之前清理所有的部分。

对于在任意时间发出的呼叫,这将取决于您重写的呼叫的性质。如果你想在之前做一些这个框架的计算,所以你可以影响他们的结果,你最终需要super调用。如果你想根据超级计算的计算,你的super调用应该在一开始。

总之,没有固定的规则:它取决于你所压倒的特定方法的功能。

相关问题