当我创建自己的Android自定义类时,我扩展其本地类。然后当我想覆盖基础方法,我总是调用super()方法,就像我一直在onCreate,onStop等。
我认为这是它,因为从一开始Android团队建议我们总是调用super的每一个方法覆盖。
但是,在许多书中,我可以看到,开发人员,比我更有经验的人经常忽略调用super,我真的怀疑他们是因为缺乏知识。例如,看看这个基本的SAX解析器类,其中在startElement中省略了super,字符和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将始终作为自动化过程的一部分创建。
这只是一个简单的例子。书里充满了类似的代码。
他们怎么知道什么时候你必须打电话超级,当你可以省略它打电话?
PS。不绑定到此特定示例。这只是从许多例子中随机抽取的一个例子。
(这听起来像一个初学者的问题,但我真的很困惑。)