接口中是没有方法实体的、需要实现类重写,然后通过接口回调调用实现类重定的方法,那问题是:Document 和NodeList 都是接口,那下面程序中,接口调用的方法是在哪里实现的?
//创建 一个DocumentBuilder对象
DocumentBuilder db=dbf.newDocumentBuilder();
//通过 DocumentBuilder对象的parser方法加载books.xml文件到当前项目下
Document document=db.parse("books.xml");
//获取所有book节点的集合
NodeList bookList=document.getElementsByTagName("book");
//通过 nodelist的getlength()方法可以获取booklist的长度
System.out.println("一共有"+bookList.getLength()+"本书");
//遍历每全个book节点
for(int i=0;i<bookList.getLength();i++){
我喜欢刨根问底,虽然记住了过程,不影响这部分知识的运用,不过不弄请楚,老感觉别扭。你的回答,我不是很理解,我也百度了好久,都没有明确说明这个问题的。但我在查DOM的时候,才知道,其本身是浏览器内嵌的一个标准借口,Node,NodeList,Document等都是DOM中的接口,其方法应该是在DOM中实现的,而java只不过是引入了这些借口,其DocumentBuilderFactory和DocumentBuilder才是自身的,通过他们可以建立java和dom的通道,可以调用dom同名借口中的方法,其实那些方法都是DOM中的。
我认为是在getElementByTagName()相关的方法中实现,其返回的是NoteList类型的集合,虽然NoteList是接口类型,但在调用getElementByTagName()方法时其相关的类已实现了NoteList接口,我们可以追踪getElementByTagName()方法定义,就可以逐步看到到底是哪个类实现了NoteList接口。我感觉这也是接口、OO封装和继承的好处,让我们关注目的,忽略具体基础的实现。这我的浅见,仅供参考,请多指教!