黑马程序员技术交流社区

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

作者: 姚远    时间: 2012-5-13 06:26
标题: Java接口怎么能实例化和运用抽象函数
我是刚学Java的,我最近遇到了一个问题,麻烦大家给点建议啊!!谢谢!!  
Properties s=System.getProoperties();  

Enumeration e=sp.propertyNames();  

while(e.hasMoreElements())   

  {                 

…………      

}

其中:Enumeration是接口,怎么可以实例化啊??      
            Enumeration的对象e怎么还可以调用  Enumeration里的抽象函数hasMoreElements()     ????


作者: 索学超    时间: 2012-5-13 08:38
sp.propertyNames();  返回的应该是一个实现了Enumeration 接口的子类对象吧
这个相当于父类的引用指向子类的对象,属于多态的范畴,不知道你看多态了没
既然是指向了子类对象,那么那些方法其实是已经实现了的,自然能够调用了
作者: Zhang_qian    时间: 2012-5-13 18:34
接口是不可以实例化的,能实例化的只是继承了该接口的子类,至于你说的抽象方法也只有被重写后才可以调用否则是不可以被调用的
作者: 冯建鹏    时间: 2012-5-13 22:37
哥们呀,澄清一个问题啊,接口是不能实例化的。
Properties sp=System.getProoperties();  
Enumeration e=sp.propertyNames();  
这句话我的理解是应该用到了多态,sp.propertyNames()这句话返回的属于Enumeration ,但是这个不一定是Enumeration  也许是它的子类

就比如一个方法可以得到动物的名字,
public  Animal  getName(Animal ani)
{
   return ani;
}
而这个方法接受的参数是接口类型动物,
返回的也是动物类型的,  比如你传入一个猫参数,它属于动物,所以可以接受并返回。。
就爱可以写成
Animal  animal=getName(cat);




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