独自のAndroidカスタムクラスを作成すると、extendそのネイティブクラスになります。次に、ベースメソッドをオーバーライドするときsuper()はonCreate、常にonStop、などで行うように、常にメソッドを呼び出します。
そして、これはそれだと思ったのは、最初からAndroidチームが常にsuperすべてのメソッドのオーバーライドを呼び出すようにアドバイスしていたからです。
しかし、多くの本では、自分よりも経験豊富な開発者が電話superを省略していることがよくあり、知識の欠如として電話をかけていることを本当に疑っています。たとえば、とで省略されている次の基本的なSAXパーサークラスを見てください。superstartElementcharactersendElement
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。この特定の例に束縛しないでください。これは、多くの例の中からランダムに選んだ一例にすぎません。
(これは初心者の質問のように聞こえるかもしれませんが、私は本当に混乱しています。)

endElementのAPIドキュメントには、「デフォルトでは何もしない。アプリケーションの作成者はこのメソッドをオーバーライドする可能性があります...」とあります。つまり、「何もしない」ため、superを安全に呼び出すことができます。そのメソッドのドキュメントを読んだ場合、する必要があるか、できないか、するべきではないか、ということがよくわかります。