super.XXX()方法的使用位置有关问题

   阅读
super.XXX()方法的使用位置问题
初涉Android编程,看书上的代码时,有些地方调用父类的方法,但是有的调用super.XX()是在方法体开始的第一句,有些则是方法体的最后一句。
如下面的代码,
Java code

@Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        width = w / 9f;
        height = h / 9f;
        getRect(selX, selY, selRect);
        super.onSizeChanged(w, h, oldw, oldh);//请问最后这一句话起什么作用啊?
    }



------解决方案--------------------
你用的这个super.onSizeChanged的作用在后面和你说好了。

首先,如果super.xxx放在最前面,很可能是因为基类里面做了很多初始化的事情,如果这些事情不先做掉,你后面的调用会出现问题,所以必须放在前面。当然,还可能会有其他原因,这个要从全局来看。

而super.xxx放在后面,原因比较多:
1. 只是希望在super.xxx被调用时,做一些其他事情。这时候就会把想做的事情,例如log或者什么的,放在super.xxx的前面,因为如果放在后面的话,可能时机就错掉了(当然,有些时候就需要放在后面,也是log的情况。。这个顺序全看需求了。)
2. 需要提前修改super.xxx所需的一些参数。这时候就要在前面做掉。
3. super.xxx可能会修改某些参数,所以要在super.xxx被调用之前先把这些参数用掉。
。。。

放前放后,原因是多种多样的,其实我说这个要看源代码的原因就在于这里了。
一般平时写代码的时候,也会遇到是先调用基类的xxx方法还是后调用的问题,这里是一样的原因嘛。
阅读