黑马程序员技术交流社区

标题: 集合的问题 [打印本页]

作者: 芦曦    时间: 2012-9-3 15:39
标题: 集合的问题
ArrayList al = new ArrayList();
List list = new ArrayList();
这2句  有什么区别吗?
作者: 武庆东    时间: 2012-9-3 15:46
ArrayList al = new ArrayList();//新建一个ArryList类对象,里面的方法和属性都是Arraylist所有
List list = new ArrayList();//List是一个抽象类,不能直接实例化对象。ArrayList是List的实现类,通过新建子类发生向上类型的转变换实现了list中的抽象方法,值得说明的是发生向上类型的转换后,新建的对象所有的属性和方法均为子类ArrayList的属性和方法~!
作者: 杨震    时间: 2012-9-3 15:47
本帖最后由 杨震 于 2012-9-4 08:41 编辑

List是ArrayList的实现接口,用其作引用,更具通用性,将来如果想换成LinkedList实现,则只需要将ArrayList改换成LinkedList即可,其他代码不需要变动,但如果用ArrayList作引用,没有这种通用性好处;

效果其实差不多
作者: 孙沛    时间: 2012-9-3 15:47
List是接口,List特性就是有序,会确保以一定的顺序保存元素.
ArrayList是它的实现类,是一个用数组实现的List.

List list = new ArrayList();
这样做的原因是list就相当于是一个泛型的实现
其实是一样的
作者: 袁艳超    时间: 2012-9-3 15:51
这应该是java的三大特点之一,多态
作者: 杨卫腾    时间: 2012-9-3 15:53
本帖最后由 杨卫腾 于 2012-9-3 15:54 编辑

ArrayList al = new ArrayList();  
是新建一个ArryList类对象,创建的是已经实现的类的对象。

List list = new ArrayList();      

List是一个接口,里边是抽象方法,不能直接实例化对象。ArrayList是List的实现类,通过多态,子类发生向上转型实现了list中的抽象方法,但是发生向上转型后,新建的对象所有的属性和方法均为子类ArrayList对象的属性和方法
作者: 刘岩喜    时间: 2012-9-3 21:16
典型多态的应用,提高代码的可扩展性,多了解一下多态问题自然解决




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