2012-03-20 53 views
2

在Eclipse的Android项目,如果我输入类似:为什么eclipse默认保护委托方法?

void onCreate(Bundle bundle) { 
    mButton.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      handleClick(); 
     }); 
}  

的Eclipse则建议增加handleClick()实现我给了我两个选择:要么在OnClickListener或封闭Activity

因此,如果我告诉Eclipse在Activity中执行handleClick(),它会这样做,并且它使handleClick()一个protected方法。

我想知道为什么不是private,这背后的理由是什么,为什么它protected

+0

所以你可以覆盖它吗? – 2012-03-20 19:12:44

+0

这一定是你和克里斯汤普森下面解释的原因,谢谢 – 2012-03-21 06:43:55

回答

2

那么,这是一个猜测,但如果它受到保护,委托方法会更加强大。被保护允许子类覆盖它,通过动态分派提供未来扩展的接口等。但是,如果它是私有的,那么你所要完成的就是移动一些代码。你可能会把方法的内容放在onClick

+0

那一定是吧。现在我明白了,谢谢。 – 2012-03-21 06:42:44

+0

公平地说,“只是移动代码”被称为“重构”,并且是移动代码的有效理由。 – 2012-03-21 09:30:37