Kendi Android özel sınıfımı oluşturduğumda, extend
onun yerel sınıfıyım. Ben baz yöntemi geçersiz istediğinizde Sonra, hep diyoruz super()
hep yapmak gibi, yöntem onCreate
, onStop
vb
Ve en başından beri Android ekibi bize super
her yöntemi geçersiz kılma çağrısında bulunmamızı tavsiye ettiği için bunun bu olduğunu düşündüm .
Ancak birçok kitapta, benden daha deneyimli geliştiricilerin çoğu zaman aramayı ihmal super
ettiklerini ve bunu bilgi eksikliği olarak yaptıklarından gerçekten şüpheliyim. Örneğin, bu temel bakmak SAX çözümleyici sınıfında super
yer atlanırsa startElement
, characters
ve 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 veya başka bir IDE aracılığıyla herhangi bir geçersiz kılma yöntemi oluşturmaya çalışırsanız, super
her zaman otomatik işlemin bir parçası olarak oluşturulur.
Bu sadece basit bir örnekti. Kitaplar benzer kodlarla doludur .
Ne zaman aramanız gerektiğini super
ve aramayı ne zaman atlayabileceğinizi nasıl biliyorlar ?
PS. Bu özel örneğe bağlanmayın. Pek çok örnekten rastgele seçilmiş bir örnekti.
(Bu başlangıç sorusu gibi gelebilir ama gerçekten kafam karıştı.)
endElement
API dokümanı "Varsayılan olarak, hiçbir şey yapmayın. Uygulama yazarları bu yöntemi geçersiz kılabilir ...", yani "hiçbir şey" yapmadığı için süper'i güvenle çağırabileceğiniz anlamına gelir, ancak buna gerek yoktur ve gerçekten geçersiz kılabilirsiniz. Bu yöntemin belgesini okursanız, yapıp yapamayacağınızı / yapmamanız gerektiğini sık sık anlayabilirsiniz.