Когда я создаю свой собственный пользовательский класс 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. Не связывайтесь с этим конкретным примером. Это был просто случай, случайно выбранный из многих примеров.
(Это может показаться новичком, но я действительно смущен.)