问题描述
|
在阅读“ Hello,Android”时,我注意到一个问题。
当他在Activity中实现onCreate()时,它看起来像:
{
super.onCreate(..);
...
...
}
但是onSizeChanged()看起来像:
{
...
...
super.onSizeChange();
}
而且他不会在onDraw()中调用super。
我应该在哪里放置超级通话说明?在Android的文档中哪里可以找到答案?
解决方法
在子类中任何覆盖的方法中,super.methodname()的位置通常是该方法中的第一件事,例如
onCreate()
。但是,有时您需要在调用super之前执行其他步骤,因此您可以像onSizeChanged()
方法中那样进行操作。超级调用是根据此条件而不是其他任何规则确定的。
,在很多情况下,当您考虑在宏的事物方案中覆盖的功能出现在什么地方时,这个问题的有用答案就会出现。
如果您要调用的东西起初始化器的作用,那么super
调用应该(通常)在开头,因为您希望在尝试初始化子类之前先初始化基类。
如果您要调用的行为类似于清理例程,则通常应在末尾进行super
调用,因为您想在超类清理自身之前清理所有片段。
对于在任意时间出现的呼叫,这将取决于您覆盖的呼叫的性质。如果您想在框架进行计算之前先做一些事情,以便可以影响它们的结果,则需要在最后调用super
。如果要基于超类的计算进行计算,则super
调用应从头开始。
简而言之,没有固定的规则:这取决于您要重写的特定方法的功能。