接口用来描述类的功能,而不指明具体的实现方法。但是Iterator作为一个接口继承与collection中的set,它的方法包含hasnext()next remove,方法又能实现,那么不是与原定义矛盾了吗?
------解决方案--------------------
Collection c = new HashSet();
Iterator i = c.iterator();
i.hasnext(...);
========================
Collection是一个接口,HashSet是Collection的实现类(非抽象类,否则就new操作非法)!
当调用c.iterator()时,实际是去HashSet类中找到这个方法并执行,该方法的返回值是一个迭代器对象!
接着的i.hasnext()并不是调用Iterator中的方法,则是调用了由Collection声明、由HashSet类new出的对象c调用HashSet类中的hasnext()方法!!!
其实这些只是涉及到了RTTI(运行期类型检查)的知识!自己好好看看书吧!!