나만의 Android 사용자 지정 클래스를 만들 때 extend
기본 클래스입니다. 나는 기본 메서드를 재정의 할 때 다음, 나는 항상 전화 super()
난 항상에서 할 것처럼, 방법 onCreate
, onStop
등
처음부터 Android 팀이 항상 super
모든 메서드 재정의를 호출하라고 조언했기 때문에 이것이 바로 이것이라고 생각했습니다 .
그러나 많은 책에서 나보다 경험이 많은 개발자들이 종종 전화를 생략하는 super
것을 볼 수 있으며 그들이 지식 부족으로 그렇게하는 것은 정말로 의심 스럽다. 예를 들어 , and 에서 생략 된 기본 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
를 생략 할 수 있는지 어떻게 알 수 있습니까?
추신. 이 특정 예에 바인딩하지 마십시오. 많은 예에서 무작위로 뽑은 예일뿐입니다.
(초보자 질문처럼 들릴 수 있지만 정말 혼란 스럽습니다.)
endElement
의 API 문서에는 "기본적으로 아무 작업도하지 않습니다. 응용 프로그램 작성자가이 메서드를 재정의 할 수 있습니다 ..."라는 말은 "아무것도 수행하지 않기 때문에 super를 안전하게 호출 할 수 있지만 그렇게 할 필요가 없으며 실제로 재정의 할 수 있습니다."라는 의미입니다. 해당 방법에 대한 문서를 읽으면 수행해야 / 할 수 있는지 /해서는 안되는지 종종 알 수 있습니다.