某向阳
2017-04-03 13:44
为什么一般老师在视频里用List course = new ArrayList();而不是ArrayList course = new ArrayList();?
为什么是List list = new ArrayList(),而不直接用ArrayList
编程是要面向对象编程,针对抽象(接口),而非具体
List 是接口,ArrayList是实现
实现List接口的有ArrayList、LinkedList、Vector等,所以用哪个就直接new 一个接口实现这是一种很好的设计模式.
一个接口有多种实现,这种写法是java面向对象的一种思想,依赖倒置原则,
即依赖于抽象不依赖于实现(具体)。
给调用者提供的应该是接口或者抽象类,而实现者可以实现或者继承接口或者抽象类来满足调用者,
这样调用者不必知道实现者怎样操作,实现者也可以根据具体情况去实现,这样去除了耦合。这就是java设计模式的基础思想之一。
从Java语法上,这种方式是使用接口引用指向具体实现,这样大大提高了代码使用的灵活性。
比如,你若希望用LinkedList的实现来替代ArrayList的话,只需改动一行即可:
List list = new LinkedList();
而程序中的其它部分不需要改动,这样比较灵活,不会失去通用性。
以上文字来自: https://wenku.baidu.com/view/7c6cda3510661ed9ad51f343.html
List是个集合接口
Java入门第三季
409792 学习 · 4340 问题
相似问题
回答 4