Ketika saya membuat kelas khusus Android saya sendiri, saya extendkelas aslinya. Kemudian ketika saya ingin mengganti metode dasar, saya selalu memanggil super()metode, seperti yang selalu saya lakukan di onCreate, onStop, dll
Dan saya pikir ini dia, karena sejak awal tim Android menyarankan kami untuk selalu memanggil supersetiap penggantian metode.
Tetapi, di banyak buku saya dapat melihat bahwa para pengembang, yang lebih berpengalaman daripada saya, sering mengabaikan panggilan superdan saya sangat ragu mereka melakukannya karena kurangnya pengetahuan. Misalnya, lihat kelas parser SAX dasar ini di mana superdihilangkan startElement, charactersdan 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
}
}
}
Jika Anda mencoba membuat metode penggantian melalui Eclipse atau IDE lainnya, superakan selalu dibuat sebagai bagian dari proses otomatis.
Ini hanyalah contoh sederhana. Buku penuh dengan kode serupa .
Bagaimana mereka tahu kapan Anda harus menelepon superdan kapan Anda bisa mengabaikannya?
PS. Jangan terikat pada contoh khusus ini. Itu hanya contoh yang diambil secara acak dari banyak contoh.
(Ini mungkin terdengar seperti pertanyaan pemula, tapi saya benar-benar bingung.)

endElementDokumen API mengatakan "Secara default, tidak melakukan apa-apa. Penulis aplikasi dapat mengganti metode ini ..." yang berarti Anda dapat memanggil super dengan aman karena "tidak melakukan apa-apa" tetapi Anda tidak perlu melakukannya dan Anda benar-benar dapat menggantinya. Anda sering dapat mengetahui apakah Anda harus / tidak dapat / tidak melakukannya jika Anda membaca dokumen untuk metode itu.