Quando eu faço minha própria classe personalizada Android, eu uso extendsua classe nativa. Então, quando eu quiser substituir o método base, eu sempre chamo super()método, assim como eu sempre faço em onCreate, onStop, etc.
E eu pensei que era isso, desde o início a equipe do Android nos aconselhou a sempre chamar supertodos os métodos de substituição.
Mas, em muitos livros , posso ver que os desenvolvedores, mais experientes do que eu, muitas vezes omitem a chamada supere eu realmente duvido que eles façam isso por falta de conhecimento. Por exemplo, olhe para isto básica SAX classe do analisador, onde superé omitido na startElement, characterse 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
}
}
}
Se você tentar criar qualquer método de substituição via Eclipse ou qualquer outro IDE, supersempre será criado como parte do processo automatizado.
Este foi apenas um exemplo simples. Os livros estão cheios de códigos semelhantes .
Como eles sabem quando você deve ligar supere quando pode omitir a ligação?
PS. Não se vincule a este exemplo específico. Foi apenas um exemplo escolhido aleatoriamente entre muitos exemplos.
(Pode parecer uma pergunta de iniciante, mas estou muito confuso.)

endElementO documento da API de diz "Por padrão, não faça nada. Os criadores de aplicativos podem sobrescrever este método ...", o que significa que você pode chamar super com segurança porque ele não faz "nada", mas você não precisa e pode realmente sobrescrevê-lo. Freqüentemente, você pode dizer se precisa / pode / não deve fazer isso se ler o documento desse método.