下面是eclipse自动生成的代码
[code="java"]
public class Test extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
[/code]
Test类是继承Activity,main方法中的两个方法onCreate和setContentView都是继承的Activity中的方法,为什么一个要用super而另一个不用呢?都是执行父类里的方法吗?
super.onCreate(savedInstanceState); 是一定会调用父类的onCreate方法的。
setContentView(R.layout.main); 如果子类也有一个与父类相同的setContentView方法,则执行子类的方法。如果子类没有这个方法,就执行父类setContentView的。
为什么上面一个要加super呢?
因为子类有一个与父类完全一样的onCreate方法,根据Java方法调用的动态绑定机制,不加super就一定会调用子类自己的onCreate方法。
不一定,如果子类重写了setContentView就执行子类的方法。
但是前面加super就一定会执行父类的方法
setContentView(R.layout.main);就是只Test这个Activity调用R.layout.main这个布局,而模拟器启动初始化Test时运行onCreate方法其实Test初始化是通过调用他父类的方法才能实现的
用了super的话,就是需要调用父类中的相应方法进行一些初始化的设置吧