Lorsque je crée ma propre classe personnalisée Android, je suis extend
sa classe native. Ensuite , quand je veux remplacer la méthode de base, je fais toujours appel super()
méthode, tout comme je le fais toujours onCreate
, onStop
etc.
Et je pensais que c'était ça, car dès le début, l'équipe Android nous a conseillé de toujours appeler super
chaque remplacement de méthode.
Mais, dans de nombreux livres, je peux voir 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 classe d'analyseur SAX de base où super
est omis dans startElement
, characters
et 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, elle super
sera toujours créée dans le cadre d'un processus automatisé.
Ce n’était qu’un simple exemple. Les livres regorgent de codes similaires .
Comment savent-ils quand vous devez appeler super
et quand vous pouvez l'omettre?
PS. Ne vous liez pas à cet exemple spécifique. C'était juste un exemple choisi au hasard parmi de nombreux exemples.
(Cela peut sembler une question de débutant, mais je suis vraiment confus.)
endElement
Le document de l'API de l'API dit "Par défaut, ne faites rien. Les développeurs d'applications peuvent remplacer cette méthode ...", ce qui signifie que vous pouvez appeler super en toute sécurité car il ne fait "rien" mais vous n'êtes pas obligé et vous pouvez vraiment le remplacer. Vous pouvez souvent dire si vous devez / pouvez / ne devriez pas le faire si vous lisez la documentation de cette méthode.