Java小程序的疑惑
- Java code
import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class ex02 extends Activity implements OnClickListener{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); Button btn = (Button)findViewById(R.id.button); Button btn2 = (Button)findViewById(R.id.button2); btn.setOnClickListener(this); btn2.setOnClickListener(this); } public void onClick(View arg0){ switch(arg0.getId()){ case R.id.button: setTitle("this is OK button"); break; case R.id.button2: this.finish(); break; } }}
[color=#FF6600]对于其中一段代码
- Java code
public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); Button btn = (Button)findViewById(R.id.button); Button btn2 = (Button)findViewById(R.id.button2); btn.setOnClickListener(this); btn2.setOnClickListener(this); }
我的疑问是这样的:onCreate应该是父类的函数,这里继承了父类的函数,换句话说:
父类有的东西它应该都有,而语句:super.onCreate(icicle);应该是调用父类的函数.所以
我觉得这里好像多此一举。
另外:btn.setOnClickListener(this); 应该如何理解,这里的this指的是什么.
[解决办法]
由于子类和父类中都有onCreate,要调用父类的onCreate,需要加super,不加super的话,默认调用子类的onCreate。LZ强调说子类拥有父类的属性,很对,但LZ忽略一个问题,就是子类缩小了父类的范围。
[解决办法]
super.onCreate(icicle);
这句话写了跟没写是完全不同的,这与构造函数不一样。构造函数是特殊情况。
[解决办法]
super.onCreate(icicle); 这句话是调用父类里的onCreate(Bundle icicle)方法,这句话我想在这里是必须使用的.如果不调用父类的此方法的话可能导致你的类初始化有问题.
btn.setOnClickListener(this); 这个应该是给Button添加点击事件,当前类实现了OnClickListener接口,而setOnClickListener()方法需要的参数就是OnClickListener.这里的this指的是当前类.也就是使用当前类处理Button点击事件.