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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© perfect_class 中级黑马   /  2016-6-25 13:47  /  789 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Collection c = new ArrayList();
为什么不直接 ArrayList al = new ArrayList(); ?

5 个回复

倒序浏览
编程是要面向对象编程,针对抽象(接口),而非具体。Collection 是接口,ArrayList是实现。

实现Collection接口的有ArrayList、LinkedList、Vector等,所以用哪个就直接new 一个接口实现

这是一种很好的设计模式.一个接口有多种实现,这种写法是java面向对象的一种思想,依赖倒置原则,即依赖于抽象不依赖于实现(具体)。

给调用者提供的应该是接口或者抽象类,而实现者可以实现或者继承接口或者抽象类来满足调用者,这样调用者不必知道实现者怎样操作,实现者也可以根据具体情况去实现,这样去除了耦合。这就是java设计模式的基础思想之一。
回复 使用道具 举报
1316582449 发表于 2016-6-25 13:50
编程是要面向对象编程,针对抽象(接口),而非具体。Collection 是接口,ArrayList是实现。

实现Collecti ...

好抽象,能讲通俗易懂点吗?
回复 使用道具 举报
从语法上说,这种方式是使用接口引用指向具体实现,这样大大提高了代码使用的灵活性,比如,你若希望用LinkedList的实现来替代ArrayList的话,只需改动一行即可:
Collection c=newLinkedList();
回复 使用道具 举报
1316582449 发表于 2016-6-25 14:25
从语法上说,这种方式是使用接口引用指向具体实现,这样大大提高了代码使用的灵活性,比如,你若希望用Link ...

嗯,谢谢
回复 使用道具 举报
前来学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马