在許多Android方法中,尤其是構造函數和重載方法,您應該甚至必須使用super()調用父類方法。當您使用Eclipse 源>覆蓋/實現方法...您從模板獲取代碼TODO標籤是這樣的:Android Eclipse Plugin生成的代碼中的super()調用的位置可靠嗎?
public MyCanvas(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
}
我不明白exacly在每種情況下的超做什麼,所以我總是將我的代碼插入// TODO標籤的確切位置。在這個例子中,我將在構造函數中的代碼之前以及在onDraw()中的代碼之後調用super()。
我可以在生成的代碼中始終依賴這些代碼插入位置嗎?什麼時候調用super()會有簡單的規則/解釋嗎?
雖然我認爲這個問題是回答 - 謝謝 - ,我不喜歡結果。考慮到API設計和責任分離,我相信應用程序員不應該查看API的源代碼來了解發生了什麼。我想知道是否以及何時調用super()查看API文檔。也許應該努力記錄這些方法在API類中的確切含義。例如,如果View.onDraw()不做任何事情,我寧願將它放在出於性能方面的原因,但如果我這麼做了,我並不確定。 – 2011-02-15 03:33:12