Ketika saya membuat kelas khusus Android saya sendiri, saya extend
kelas 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 super
setiap penggantian metode.
Tetapi, di banyak buku saya dapat melihat bahwa para pengembang, yang lebih berpengalaman daripada saya, sering mengabaikan panggilan super
dan saya sangat ragu mereka melakukannya karena kurangnya pengetahuan. Misalnya, lihat kelas parser SAX dasar ini di mana super
dihilangkan startElement
, characters
dan 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, super
akan selalu dibuat sebagai bagian dari proses otomatis.
Ini hanyalah contoh sederhana. Buku penuh dengan kode serupa .
Bagaimana mereka tahu kapan Anda harus menelepon super
dan 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.)
endElement
Dokumen 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.