接口是不能被实例化的,接口中的方法都是没有方法体的抽象方法。
那么请问:
List list=new Arraylist();
list.add("aaa");
list.add("bbb");
Iterator it=list.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
Iterator是一个接口,为什么它可以被实例化?就是Iterator it=list.iterator();这句,list.iterator()方法返回了一个Iterator的对象。接口中的方法都是没有方法体的抽象方法。为什么可以直接用it.hasNext(),it.next()),这些没有方法体的方法。没有方法体的方法应该什么都没实现啊?
那么请问:
List list=new Arraylist();
list.add("aaa");
list.add("bbb");
Iterator it=list.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
Iterator是一个接口,为什么它可以被实例化?就是Iterator it=list.iterator();这句,list.iterator()方法返回了一个Iterator的对象。接口中的方法都是没有方法体的抽象方法。为什么可以直接用it.hasNext(),it.next()),这些没有方法体的方法。没有方法体的方法应该什么都没实现啊?
Iterator是一个接口,它是不能事例化的,
但是它能引用實現它對象的對象,你自己去解讀下JDK源碼里面有的
返回的实例对象,实现了Iterator接口
Iterator it=list.iterator();
it是个引用,it.hasNext(),实际调用的是list.iterator()返回的实例对象的hasNext()方法
List list=new ArrayList()就是一个多态的例子。
List是ArrayList的父类,List的引用可以指向ArrayList的对象。
List的 引用list可以调用被ArrayList覆盖的方法。
可是Iterator it=list.iterator();是多态的话,
那么只能说list.iterator()产生了一个实现Iterator接口的类的对象。
那么这个类是什么那?谁能告诉我?
java.util.AbstractList$Itr
楼上的,你相信么?
List list=new ArrayList();
System.out.println(list.iterator().getClass().getName());
这个类么?