Quand je crée ma propre classe personnalisée Android, je extend
sa classe native. Ensuite, lorsque je veux surcharger la méthode de base, j'appelle toujours super()
comme je le fais toujours dans onCreate
, onStop
etc.
Et j'ai pensé que c'était ça, car dès le début l'équipe Android nous a conseillé de toujours appeler super
sur chaque surcharge de méthode.
Mais, en de nombreux livres Je constate que les développeurs, plus expérimentés que moi, omettent souvent d'appeler super
et je doute vraiment qu'ils le fassent par manque de connaissances. Par exemple, regardez cette base SAX classe d'analyseur où super
est omise dans startElement
, characters
y 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
}
}
}
Si vous essayez de créer une méthode de remplacement via Eclipse ou tout autre IDE, super
sera toujours créé dans le cadre d'un processus automatisé.
Ce n'était qu'un simple exemple. Les livres sont plein de code similaire .
Comment savent-ils quand vous devez appeler super
et quand vous pouvez l'omettre en l'appelant ?
PS. Ne vous attachez pas à cet exemple spécifique. C'est juste un exemple pris au hasard parmi de nombreux exemples.
(Cela peut sembler être une question de débutant, mais je suis vraiment confus).