在阅读“你好,Android”时我发现问题。我应该在Android事件处理程序中将超级调用放在哪里?
当他在活动中实现的onCreate(),它看起来像:
{ super.onCreate(..); ... ... }
但onSizeChanged()看起来像:
{ ... ... super.onSizeChange(); }
而且他不打电话的onDraw超( )。
我应该在哪里放置超级通话声明?我在哪里可以在android文档中找到答案?
在阅读“你好,Android”时我发现问题。我应该在Android事件处理程序中将超级调用放在哪里?
当他在活动中实现的onCreate(),它看起来像:
{ super.onCreate(..); ... ... }
但onSizeChanged()看起来像:
{ ... ... super.onSizeChange(); }
而且他不打电话的onDraw超( )。
我应该在哪里放置超级通话声明?我在哪里可以在android文档中找到答案?
在子类中的任何重写方法中,super.methodname()的位置通常是该方法中的第一个东西(如在onCreate()
中)。但是,有时在调用super之前需要执行其他步骤,因此您需要按照onSizeChanged()
方法执行此操作。超级通话由此标准决定,而不是由任何其他规则决定。
在很多情况下,当您考虑在重大计划中发生重写的功能时,这个问题的有用答案会出现。
如果您打电话的行为是初始化程序,那么super
调用应该开始(usuall),因为您希望在尝试初始化子类之前初始化基类。
如果你打电话的行为是一个清理程序,那么super
调用应该(通常)结束,因为你想在超类自行清理之前清理所有的部分。
对于在任意时间发出的呼叫,这将取决于您重写的呼叫的性质。如果你想在之前做一些这个框架的计算,所以你可以影响他们的结果,你最终需要super
调用。如果你想根据超级计算的计算,你的super
调用应该在一开始。
总之,没有固定的规则:它取决于你所压倒的特定方法的功能。
我知道这个标准。但是,如何确定在调用super之前或之后执行一个步骤? super.method()之前不能做什么事情? – 2011-04-14 02:05:02
如果您需要进行一些清理或资产加载,则可以在设计中采用onSizeChanged()方法,然后在超级调用之前执行该方法。但是,如果这种清理工作更适合于家长班,那么您就可以将其提高。看到不同?从某种意义上讲,在调用super之前,在将它们写入子类onSizeChanged()方法之前,总是认为这些步骤在父类中是否更好。你可能正在看硬性规定,但没有任何规定。软件开发中有通用的指导原则,适用于“最”的时代,并非总是如此。 – omermuhammed 2011-04-14 02:11:50