A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© whocases 黑马帝   /  2012-6-23 16:07  /  2122 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 whocases 于 2012-6-24 21:55 编辑

Java接口怎么能实例化和运用抽象函数
Properties s=System.getProoperties();  
Enumeration e=sp.propertyNames();  
while(e.hasMoreElements())   
  {                 
    …………      
}
其中:Enumeration是接口,怎么可以实例化啊??      
      Enumeration的对象e怎么还可以调用  Enumeration里的抽象函数hasMoreElements()

2 个回复

倒序浏览
本帖最后由 小张童鞋 于 2012-6-23 16:20 编辑

Properties s=System.getProoperties();  
Enumeration e=sp.propertyNames();
这两句是返回了一个实现了Properties和Enumeration 接口的类的对象,用s(或者e)来储存(或者接收)这个返回值; 这样不叫实例化,叫实现.实例化是new出来的.
s(或者e)作为他们相应接口的对象,当然可以调用他们接口的方法了
回复 使用道具 举报
本帖最后由 游洪波 于 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去调用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马