黑马程序员技术交流社区

标题: Java接口怎么能实例化和运用抽象函数 [打印本页]

作者: whocases    时间: 2012-6-23 16:07
标题: Java接口怎么能实例化和运用抽象函数
本帖最后由 whocases 于 2012-6-24 21:55 编辑

Java接口怎么能实例化和运用抽象函数
Properties s=System.getProoperties();  
Enumeration e=sp.propertyNames();  
while(e.hasMoreElements())   
  {                 
    …………      
}
其中:Enumeration是接口,怎么可以实例化啊??      
      Enumeration的对象e怎么还可以调用  Enumeration里的抽象函数hasMoreElements()
作者: 张立江    时间: 2012-6-23 16:18
本帖最后由 小张童鞋 于 2012-6-23 16:20 编辑

Properties s=System.getProoperties();  
Enumeration e=sp.propertyNames();
这两句是返回了一个实现了Properties和Enumeration 接口的类的对象,用s(或者e)来储存(或者接收)这个返回值; 这样不叫实例化,叫实现.实例化是new出来的.
s(或者e)作为他们相应接口的对象,当然可以调用他们接口的方法了
作者: 游洪波    时间: 2012-6-23 18:35
本帖最后由 游洪波 于 2012-6-23 18:37 编辑

对,楼上说的非常对,java中创建对象和实例化的关键就在于有没有NEW关键字,所以你上边的Enumeration e=sp.propertyNames(); 是对Enumeration 接口的一种实现,还有就是 接口的实现还可以这么写 :比如说我这有一个接口名字叫做 Person  ,student 类 implements 了 Person这个接口。那么Person要使用时可以这么写
Person p=new Student();这是另一种方式 子类名=new 父类名();
顺便补充一下,你那个e调用的方法确实是Enumeration 这个接口里的抽象方法,但是sp.propertyNames();是Enumeration实现所以Enumeration里边的抽象方法是必须要被实现的,所以这边可以用 e去调用




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2