当我创建自己的Android自定义类时,我会使用它的原生类.然后,当我想重写基本方法时,我总是调用super()
方法,就像我在onCreate
、onStop
等中总是做的那样.
我认为这就是答案,因为Android团队从一开始就建议我们在每次方法覆盖时总是调用super
.
但是,在many books年,我可以看到比我更有经验的开发人员经常忽略拨打super
,我真的怀疑他们这样做是因为缺乏知识.例如,看看这个基本的SAX解析器类,其中startElement
、characters
和endElement
中省略了super
:
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
将始终作为自动化过程的一部分创建.
这只是一个简单的例子.书是full of similar code美元.
他们怎么知道你什么时候必须打super
,什么时候你可以不打呢?
注意:不要拘泥于这个具体的例子.这只是从许多例子中随机选取的一个例子.
(这听起来可能是个初学者的问题,但我真的很困惑.)