黑马程序员技术交流社区

标题: 关于Collection集合的问题? [打印本页]

作者: perfect_class    时间: 2016-6-25 13:47
标题: 关于Collection集合的问题?
Collection c = new ArrayList();
为什么不直接 ArrayList al = new ArrayList(); ?

作者: 1316582449    时间: 2016-6-25 13:50
编程是要面向对象编程,针对抽象(接口),而非具体。Collection 是接口,ArrayList是实现。

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

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

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

实现Collecti ...

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

嗯,谢谢
作者: suming    时间: 2016-6-25 23:03
前来学习




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