黑马程序员技术交流社区

标题: 集合的问题,求解答 [打印本页]

作者: 绝版坏银    时间: 2015-6-1 20:34
标题: 集合的问题,求解答
Collection<String> c = new HashSet<String>(); 和HashSet<String> hs = new HashSet<String>();是不是一样的啊
作者: xiaowudu    时间: 2015-6-1 20:44
不一样的
作者: langxiao505    时间: 2015-6-1 21:28
不一样的,第一个涉及到了多态,使用时功能有区别吧。。新手只看过视频,错了勿喷:L
作者: mishisanyi    时间: 2015-6-1 21:38
不一样,c只能用Collection的方法,要使用hashSet的方法必须向下转型
作者: 907888614    时间: 2015-6-1 21:38
一个是多态,用不了子类特有方法
作者: 黯然残影    时间: 2015-6-1 21:42
不一样,第一个是多态,用不了子类的特有方法,第二个是一般的类创建对象
作者: 谢晓明    时间: 2015-6-1 21:44
不一样,c只能调用Collection的方法,hs可以访问HashSet的方法
作者: 林RM    时间: 2015-6-2 00:37
第一句是多态,c只能使用Collection的共性方法。而第二句HashSet的特有方法和Collection的共性方法都能用
作者: 武汉小菜鸟    时间: 2015-6-2 11:01
mishisanyi 发表于 2015-6-1 21:38
不一样,c只能用Collection的方法,要使用hashSet的方法必须向下转型

不对,这里是多态,不用转型
作者: 武汉小菜鸟    时间: 2015-6-2 11:02
谢晓明 发表于 2015-6-1 21:44
不一样,c只能调用Collection的方法,hs可以访问HashSet的方法

Collection是一个接口,他的方法有实体吗?
作者: wangkai    时间: 2015-6-2 11:19
路过学习学习
作者: 武汉小菜鸟    时间: 2015-6-2 11:27
谢晓明 发表于 2015-6-1 21:44
不一样,c只能调用Collection的方法,hs可以访问HashSet的方法

Collection是一个接口,他的方法有实体吗?
作者: 谢晓明    时间: 2015-6-2 21:17
武汉小菜鸟 发表于 2015-6-2 11:27
Collection是一个接口,他的方法有实体吗?

调用方法的时候就是使用的子类的方法
作者: shao122791159    时间: 2015-6-2 21:21
左边的是多态,定义的引用无法使用子类的特有功能。
右边是一个常规的定义对象。
作者: 武汉小菜鸟    时间: 2015-6-2 21:32
谢晓明 发表于 2015-6-2 21:17
调用方法的时候就是使用的子类的方法

恩恩,是这样的
作者: mishisanyi    时间: 2015-6-3 01:30
武汉小菜鸟 发表于 2015-6-2 11:01
不对,这里是多态,不用转型

不转型是不能用的,所谓的多态,是建立在子父类使用相同方法定义,但实现不同,由于对象的不同调用不同的方法,在这里,如果想用HashSet的非继承方法,必须转型。
作者: 经济    时间: 2015-6-3 07:48
不一样,第一个涉及多态,第一个只能用被HashSet复写的Collection中的方法,第二个则可以利用HashSet中的全部方法
作者: 武汉小菜鸟    时间: 2015-6-3 11:51
mishisanyi 发表于 2015-6-3 01:30
不转型是不能用的,所谓的多态,是建立在子父类使用相同方法定义,但实现不同,由于对象的不同调用不同的 ...

Collection<String> c = new HashSet<String>();
如果我没有理解错,你的意思是: HashSet<String> hs = HashSet<String> c   
转型后才能调用HashSet的方法?
作者: 武汉小菜鸟    时间: 2015-6-3 12:09
武汉小菜鸟 发表于 2015-6-3 11:51
Collection c = new HashSet();
如果我没有理解错,你的意思是: HashSet hs = HashSet c   
转型后才能 ...

哦,我明白了,就是多态只能使用两者的共有方法,如果要调用子类的特有方法,必须向下转型。
学习了,谢谢
作者: 欧阳文    时间: 2015-6-3 13:57
不一样....第一个使用的是多态要向下转型,第二个不用   知己调用方法就可以




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