黑马程序员技术交流社区

标题: 集合中接口的对象问题 [打印本页]

作者: 徘徊消逝中    时间: 2014-6-18 21:55
标题: 集合中接口的对象问题
本帖最后由 徘徊消逝中 于 2014-6-20 01:44 编辑

在集合中可以看到这样的表达:List list = Arrays.asList(“AA”,“BB”,“CC”,“DD”);
但是List不是接口么,那么接口也会有实例对象么?不是只应该只有其实现类对象么,如arrayList等等。至少此处asList返回的就是一个List对象,那么这个返回值就是一个List接口的对象,怎么看都有点别扭,想不通········
作者: a5702727    时间: 2014-6-18 22:01
这个是java的多态 父类引用指向种类对象
作者: Nathan矫立伟    时间: 2014-6-18 22:38
父类引用指向子类对象
作者: 徘徊消逝中    时间: 2014-6-18 22:53
a5702727 发表于 2014-6-18 22:01
这个是java的多态 父类引用指向种类对象

但是asList返回值并不是List的子类,而就是List啊,这个怎么解释呢?
作者: 徘徊消逝中    时间: 2014-6-18 22:54
Nathan矫立伟 发表于 2014-6-18 22:38
父类引用指向子类对象

但是asList返回值并不是List的子类,而就是List啊,这个怎么解释呢?
作者: a5702727    时间: 2014-6-18 22:55
徘徊消逝中 发表于 2014-6-18 22:53
但是asList返回值并不是List的子类,而就是List啊,这个怎么解释呢?

ArrayList实现了List接口
作者: 徘徊消逝中    时间: 2014-6-18 23:15
a5702727 发表于 2014-6-18 22:55
ArrayList实现了List接口

你的意识是说:static List asList(Object...o)这个方法虽然返回的是List,但是实际上是List的实现类arrayList?
作者: a5702727    时间: 2014-6-18 23:28
徘徊消逝中 发表于 2014-6-18 23:15
你的意识是说:static List asList(Object...o)这个方法虽然返回的是List,但是实际上是List的实现类ar ...

我擦  我看错题了 。。。我以为是List list =new ArrayList();我还纳闷 你技术分这么高还能不会这个简单问题。。。不过你可以看一下asList里面是如何写的  看下 他返回的是什么对象  我感觉是多态 有可能返回的就是一个list的子类
作者: 徘徊消逝中    时间: 2014-6-18 23:41
a5702727 发表于 2014-6-18 23:28
我擦  我看错题了 。。。我以为是List list =new ArrayList();我还纳闷 你技术分这么高还能不会这个简单 ...

好的,同样谢谢你,学的时候没注意,回过头来再看,总感觉差点什么
作者: alive    时间: 2014-6-20 02:12
类型提升,接口中多态返回值不也是接口么,借口是不能new对象的,但是发生多态时new出来的对象不就是返回的接口么




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