黑马程序员技术交流社区

标题: 关于面向接口编程的疑问 [打印本页]

作者: 刘永建    时间: 2013-4-27 17:07
标题: 关于面向接口编程的疑问
本帖最后由 刘永建 于 2013-4-28 17:03 编辑

张老师总说:
List list = new ArrayList()要比写成
ArrayList list = new ArrayList()要好
我不太明白这两者的区别,请指教一下,希望可以详细一点,谢谢大家!
作者: 袁梦希    时间: 2013-4-27 17:20
本帖最后由 袁梦希 于 2013-4-27 17:29 编辑

楼主你好:
其实也没有什么特别的,如果你用ArrayList list = new ArrayList()实例化,那么把这个对象给写死了,
如果你用List接口,List list = new ArrayList(),还可以实例化(new)其他List接口的实现类,
比如:
List<T> list = new ArrayList();
List<T> list = new LinkedList();
List<T> list = new Vector();
而你要用
ArrayList实例化对象,你就不能有这么多了。
ArrayList<T> list = new LinkedList();   错误
ArrayList<T> list = new Vector();        错误

其实究其原理就是多态的性质,让其可移植性变强了。
作者: 海不扬波    时间: 2013-4-27 19:39
ArrayList是实现了List接口的,多态形式的体现,所以可以写成List list=new ArrayList()至于这么写的好处就是,令你的代码将来易于维护,
比如说后来你发现你的list可能用链表实现会更好只需要改成List list=new LinkedList()就行了.
作者: 李慧声    时间: 2013-4-27 20:14
俺也学习一下。




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