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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 姚远 初级黑马   /  2012-5-13 06:26  /  2528 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我是刚学Java的,我最近遇到了一个问题,麻烦大家给点建议啊!!谢谢!!  
Properties s=System.getProoperties();  

Enumeration e=sp.propertyNames();  

while(e.hasMoreElements())   

  {                 

…………      

}

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

3 个回复

倒序浏览
sp.propertyNames();  返回的应该是一个实现了Enumeration 接口的子类对象吧
这个相当于父类的引用指向子类的对象,属于多态的范畴,不知道你看多态了没
既然是指向了子类对象,那么那些方法其实是已经实现了的,自然能够调用了
回复 使用道具 举报
接口是不可以实例化的,能实例化的只是继承了该接口的子类,至于你说的抽象方法也只有被重写后才可以调用否则是不可以被调用的
回复 使用道具 举报
哥们呀,澄清一个问题啊,接口是不能实例化的。
Properties sp=System.getProoperties();  
Enumeration e=sp.propertyNames();  
这句话我的理解是应该用到了多态,sp.propertyNames()这句话返回的属于Enumeration ,但是这个不一定是Enumeration  也许是它的子类

就比如一个方法可以得到动物的名字,
public  Animal  getName(Animal ani)
{
   return ani;
}
而这个方法接受的参数是接口类型动物,
返回的也是动物类型的,  比如你传入一个猫参数,它属于动物,所以可以接受并返回。。
就爱可以写成
Animal  animal=getName(cat);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马