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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 绝版坏银 中级黑马   /  2015-6-1 20:34  /  813 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Collection<String> c = new HashSet<String>(); 和HashSet<String> hs = new HashSet<String>();是不是一样的啊

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

20 个回复

倒序浏览
不一样的
回复 使用道具 举报
不一样的,第一个涉及到了多态,使用时功能有区别吧。。新手只看过视频,错了勿喷:L
回复 使用道具 举报
不一样,c只能用Collection的方法,要使用hashSet的方法必须向下转型

点评

正解  发表于 2015-6-3 13:26
回复 使用道具 举报
一个是多态,用不了子类特有方法
回复 使用道具 举报
不一样,第一个是多态,用不了子类的特有方法,第二个是一般的类创建对象
回复 使用道具 举报
不一样,c只能调用Collection的方法,hs可以访问HashSet的方法
回复 使用道具 举报
第一句是多态,c只能使用Collection的共性方法。而第二句HashSet的特有方法和Collection的共性方法都能用
回复 使用道具 举报
mishisanyi 发表于 2015-6-1 21:38
不一样,c只能用Collection的方法,要使用hashSet的方法必须向下转型

不对,这里是多态,不用转型
回复 使用道具 举报
谢晓明 发表于 2015-6-1 21:44
不一样,c只能调用Collection的方法,hs可以访问HashSet的方法

Collection是一个接口,他的方法有实体吗?
回复 使用道具 举报
路过学习学习
回复 使用道具 举报
谢晓明 发表于 2015-6-1 21:44
不一样,c只能调用Collection的方法,hs可以访问HashSet的方法

Collection是一个接口,他的方法有实体吗?
回复 使用道具 举报
武汉小菜鸟 发表于 2015-6-2 11:27
Collection是一个接口,他的方法有实体吗?

调用方法的时候就是使用的子类的方法
回复 使用道具 举报
左边的是多态,定义的引用无法使用子类的特有功能。
右边是一个常规的定义对象。
回复 使用道具 举报
谢晓明 发表于 2015-6-2 21:17
调用方法的时候就是使用的子类的方法

恩恩,是这样的
回复 使用道具 举报
武汉小菜鸟 发表于 2015-6-2 11:01
不对,这里是多态,不用转型

不转型是不能用的,所谓的多态,是建立在子父类使用相同方法定义,但实现不同,由于对象的不同调用不同的方法,在这里,如果想用HashSet的非继承方法,必须转型。
回复 使用道具 举报
不一样,第一个涉及多态,第一个只能用被HashSet复写的Collection中的方法,第二个则可以利用HashSet中的全部方法
回复 使用道具 举报
mishisanyi 发表于 2015-6-3 01:30
不转型是不能用的,所谓的多态,是建立在子父类使用相同方法定义,但实现不同,由于对象的不同调用不同的 ...

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

哦,我明白了,就是多态只能使用两者的共有方法,如果要调用子类的特有方法,必须向下转型。
学习了,谢谢
回复 使用道具 举报
不一样....第一个使用的是多态要向下转型,第二个不用   知己调用方法就可以
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马