2012-03-20 54 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

相關問題