當我製作屬於我自己的Android自定義類時,我的原生類是extend
。然後,當我要重寫基方法,我總是叫super()
方法,就像我一直做onCreate
,onStop
等當重寫時不調用super()方法?
而且我認爲這是它,因爲從一開始Android團隊建議我們始終每個方法覆蓋請致電super
。
但是,在很多書我可以看到,開發商,比我更有經驗,往往忽略調用super
,我真懷疑他們做它作爲一個知識的缺乏。例如,看一下這個基本SAX分析器類,其中super
在startElement
,characters
和endElement
省略:
public class SAXParser extends DefaultHandler{
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if(qName.equalsIgnoreCase("XXY")) {
//do something
}
}
public void characters(char[] ch, int start, int length) throws SAXException {
//do something
}
public void endElement(String uri, String localName, String qName) throws SAXException {
if(qName.equalsIgnoreCase("XXY")) {
//do something
}else() {
//do something
}
}
}
如果您嘗試創建通過Eclipse或任何其他IDE任何覆蓋方法,super
總是被創建爲自動化過程的一部分。
這只是一個簡單的例子。書籍是,全部類似代碼。
他們如何知道您何時必須致電super
以及何時可以省略呼叫?
PS。不要拘泥於這個特定的例子。這只是從很多例子中隨機挑選的一個例子。
(這聽起來像一個初學者的問題,但我真的很困惑。)
endElement的API文檔中提到「默認情況下,不做任何事情,應用程序編寫者可以重寫此方法...」,這意味着您可以安全地調用super,因爲它「沒有」,但您不必你真的可以覆蓋它。如果您閱讀該方法的文檔,您可以經常分辨是否必須/可以/不應該這樣做。 – zapl 2012-04-20 11:07:57
小例子:我在啓動畫面中使用onBackPressed(),並且我不會調用超級,所以它不會熄滅,它只是禁用按鈕。 – 2012-04-25 03:10:36
@sandalone對不起,在這裏提問,但是您是否有任何關於如何通過應用內結算處理增值稅的經驗,以及哪些國家/地區是由Google自動完成的,哪些國家/地區需要手動上報/繳納增值稅稅?請參閱http://stackoverflow.com/questions/36506835/android-in-app-billing-vat-tax – 2016-04-08 18:51:37