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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 芦曦 中级黑马   /  2012-9-3 15:39  /  1797 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ArrayList al = new ArrayList();
List list = new ArrayList();
这2句  有什么区别吗?

6 个回复

倒序浏览
ArrayList al = new ArrayList();//新建一个ArryList类对象,里面的方法和属性都是Arraylist所有
List list = new ArrayList();//List是一个抽象类,不能直接实例化对象。ArrayList是List的实现类,通过新建子类发生向上类型的转变换实现了list中的抽象方法,值得说明的是发生向上类型的转换后,新建的对象所有的属性和方法均为子类ArrayList的属性和方法~!
回复 使用道具 举报
本帖最后由 杨震 于 2012-9-4 08:41 编辑

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

效果其实差不多

评分

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

查看全部评分

回复 使用道具 举报
List是接口,List特性就是有序,会确保以一定的顺序保存元素.
ArrayList是它的实现类,是一个用数组实现的List.

List list = new ArrayList();
这样做的原因是list就相当于是一个泛型的实现
其实是一样的
回复 使用道具 举报
这应该是java的三大特点之一,多态

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 杨卫腾 于 2012-9-3 15:54 编辑

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

List list = new ArrayList();      

List是一个接口,里边是抽象方法,不能直接实例化对象。ArrayList是List的实现类,通过多态,子类发生向上转型实现了list中的抽象方法,但是发生向上转型后,新建的对象所有的属性和方法均为子类ArrayList对象的属性和方法

评分

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

查看全部评分

回复 使用道具 举报
典型多态的应用,提高代码的可扩展性,多了解一下多态问题自然解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马