读书人

Java小程序的疑惑,该如何解决

发布时间: 2012-01-07 21:41:55 作者: rapoo

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);    }
[/color]

我的疑问是这样的: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点击事件.

读书人网 >J2SE开发

热点推荐