请教2个小问题

warword0 2008-05-25 04:28:15
import java.util.*;

public class Test {
public static void main(String[] args) {
Collection c = new HashSet();
c.add(new Name("f1","f2"))//name类的建立略了
..............................
Interator i = c.iterator();
while(i.hasNext()) {
Name n = (Name)i.next();
System.out.print(n.getFirstName()+" ")
}
}
}
问题是c是父类引用指向子类对象,那HasSet特有的属性不就用不了了吗,那直接就建立Collection类不就完了吗?
第二个是i拿到HasSet提供的遍历c的一个对象吗?
...全文
82 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xian_hf 2008-05-25
  • 打赏
  • 举报
回复
去看看多态吧,呵呵
apples_009 2008-05-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 palm_civet 的回复:]
collection 是接口怎么实例化?
[/Quote]
chenhonghong 2008-05-25
  • 打赏
  • 举报
回复
你把hashset();向上转型了 窄化了hashset(); 只能使用 继承自collection 中的方法了
warword0 2008-05-25
  • 打赏
  • 举报
回复
谢谢大家,Collection c = new HashSet(); 的意思是建立一个HashSet对象,但是只能看到Collection中提供的方法,是这样吗?
vip_zhujing 2008-05-25
  • 打赏
  • 举报
回复
将接口的引用指向其实现类的对象,这是Java中基于接口的多态的方式,建议楼主看看多态的内容;
Interator是迭代器,本身就是为了方便遍历集合类中的元素而生的。
nisersent 2008-05-25
  • 打赏
  • 举报
回复
collection是接口,它不能实例化,必须用其子类来实现,
所以是 Collection c = new HashSet();//HashSet是Collection接口的一个实现
此时的c是一个实现了Collection接口的HashSet,它只能有Collection接口定义的方法和属性,
如果你这样:Object o = new HashSet();
那么o只有Object类中的方法。
palm_civet 2008-05-25
  • 打赏
  • 举报
回复
i拿到HasSet提供的遍历c的一个对象吗?是的,可以去了解一下迭代子模式
palm_civet 2008-05-25
  • 打赏
  • 举报
回复
collection 是接口怎么实例化?
warword0 2008-05-25
  • 打赏
  • 举报
回复
谢谢各位,我刚学java可能问的有点幼稚

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧