Коли я роблю власний власний клас Android, я extendйого рідний клас. Тоді, коли я хочу змінити базовий метод, я завжди викликаю super()метод, як я завжди це роблю onCreate, onStopі т.д.
І я подумав, що це все, тому що з самого початку команда Android радила нам завжди закликати superкожен метод замінити.
Але в багатьох книгах я бачу, що розробники, більш досвідчені, ніж я, часто пропускають дзвінки, superі я дуже сумніваюся, що вони роблять це як брак знань. Наприклад, подивіться на цей базовий клас аналізатора SAX, де superвін пропущений startElement, charactersі 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
}
}
}
Якщо ви спробуєте створити будь-який метод заміщення за допомогою Eclipse або будь-якого іншого IDE, superвін завжди створюватиметься як частина автоматизованого процесу.
Це був просто простий приклад. Книги рясніють подібним кодом .
Звідки вони знають, коли потрібно дзвонити superі коли ви можете пропустити дзвінок?
PS. Не пов'язуйте цей конкретний приклад. Це був лише приклад, випадковим чином обраний із багатьох прикладів.
(Це може здатися питанням для початківців, але я дуже розгублений.)

endElementAPI doc каже: "За замовчуванням нічого не робити. Автори програм можуть перекрити цей метод ..." Це означає, що ви можете сміливо викликати супер, тому що він робить "нічого", але вам цього не потрібно, і ви дійсно можете його перекрити. Ви часто можете сказати, чи потрібно / не можете / не варто цього робити, якщо читаєте документ для цього методу.