当我制作属于我自己的Android自定义类时,我的原生类是extend
。然后,当我要重写基方法,我总是叫super()
方法,就像我一直做onCreate
,onStop
等当重写时不调用super()方法?
而且我认为这是它,因为从一开始Android团队建议我们始终每个方法覆盖请致电super
。
但是,在很多书我可以看到,开发商,比我更有经验,往往忽略调用super
,我真怀疑他们做它作为一个知识的缺乏。例如,看一下这个基本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
以及何时可以省略呼叫?
PS。不要拘泥于这个特定的例子。这只是从很多例子中随机挑选的一个例子。
(这听起来像一个初学者的问题,但我真的很困惑。)
endElement的API文档中提到“默认情况下,不做任何事情,应用程序编写者可以重写此方法...”,这意味着您可以安全地调用super,因为它“没有”,但您不必你真的可以覆盖它。如果您阅读该方法的文档,您可以经常分辨是否必须/可以/不应该这样做。 – zapl 2012-04-20 11:07:57
小例子:我在启动画面中使用onBackPressed(),并且我不会调用超级,所以它不会熄灭,它只是禁用按钮。 – 2012-04-25 03:10:36
@sandalone对不起,在这里提问,但是您是否有任何关于如何通过应用内结算处理增值税的经验,以及哪些国家/地区是由Google自动完成的,哪些国家/地区需要手动上报/缴纳增值税税?请参阅http://stackoverflow.com/questions/36506835/android-in-app-billing-vat-tax – 2016-04-08 18:51:37