public abstract class DocumentBuilder {
//.....
public Document parse(File f) throws SAXException, IOException {
if (f == null) {
throw new IllegalArgumentException("File cannot be null");
} String uri = "file:" + f.getAbsolutePath();
if (File.separatorChar == '\\') {
uri = uri.replace('\\', '/');
}
InputSource in = new InputSource(uri);
return parse(in);
}
//.....
public abstract Document parse(InputSource is)
throws SAXException, IOException;
}请问此处为何可以调用抽象函数?
楼主你的那个parse(in) 不是抽象的,而是调用 parse(File f)这个类方法它并不是抽象的,
public abstract Document parse(InputSource is)的确是抽象的,但它重载了parse(File f),所以可以调用
由继承类实现 parse(InputSource is) 方法。
java.util.AbstractCollection 也是这么干的。
看parse(in)的参数是InputSource,调用的难道不是public abstract Document parse(InputSource is)?实在不太明白,还请细细道明!谢谢