Java-当重载的时候,什么时候不去调用super.method()?

WP主题Bug提交 WP主题Bug提交 主题:1067 回复:2226

Java-当重载的时候,什么时候不去调用super.method()?

晚风撩人 发布于 2017-03-09 字数 844 浏览 1098 回复 3

正常情况下,我们重载一个类的时候经常会先要super.mothed(),调用父类的方法,然后再执行扩展的方法。可是在有些程序中(较权威的参考资料中)却有时候不调用,都是直接用了,如下面的代码:

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
}
}
}

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(3

清晨说ぺ晚安 2017-10-26 3 楼

父类:

void print(){
System.out.println("1");
}

你要想打印2,在子类覆盖此方法就不需要super.print():

 void print(){
System.out.println("2");
}

你要想打印2后再打印1,那就可以调用父类本方法:

 void print(){
System.out.println("2");
super.print();
}

瑾兮 2017-03-29 2 楼

super.method()就是子类中先调用父类的构造方法,这个看你自己需要,如果不需要调用当然就不需要加了,个人感觉,先调用super.method()就相当于先调用了父类的方法,然后在执行自己的code,而不调用则是单纯的覆盖父类方法,还是看你的业务需要

虐人心 2017-03-29 1 楼

父类method可以作为子类method的一部分的时候,可以调用super.method.
比如父类的有个保存方法save,调用后台保存
1.子类只想加个前台校验,则 先写校验代码,然后super.save().
2.子类想在保存后,加一步操作,则先super.save();再写自己的操作。
3.子类的保存操作和父类不同(比如调用后台的service变化了),则需要完全重写save,不用调用父类的save