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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李桐 高级黑马   /  2012-11-15 16:53  /  1976 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李桐 于 2012-11-16 16:56 编辑

刚看完张孝祥老师的交通灯管理系统,里面提到了一点面向接口编程...所以就有了下面这三个
                    ArrayList a = new ArrayList();
                Collection b = new ArrayList();
                List c = new ArrayList();

不就是一个集合么,一直分不清楚为什么写成这三样,有什么不一样,求教一下大家...

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
Collection是层次结构中的根接口,List是Collection的子接口,ArrayList是实现了List的类。
    ArrayList a = new ArrayList();
      Collection b = new ArrayList();
      List c = new ArrayList();
对象a、b、c、能进行的操作是不一样的。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1.Collection是集合结构中的根接口
2.List是Collection的子接口
3.ArrayList是实现了List的子类。
其实这里面重要的是多态。
比如现在 你的Collection col=new ArrayList();(ArrayList的查询效率高)
但在后期因为需要,你改成了Collection col=new LinkedList();(插入删除效率高)
只需要更改具体的实现类,不需要改 与Collection col有关的代码。
这也是面向接口编程的一个大大的好处。只需要更改具体实现。




评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
Collection是List的基接口,
list是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。
ArrayList是实现List的类,实现了可变大小的数组。
回复 使用道具 举报
面向接口编程有利于以后程序的扩展的,List c = new ArrayList();这句用到了多态,多态就是父类的引用指向子类
回复 使用道具 举报
那一般什么时候用什么呢
回复 使用道具 举报
      ArrayList a = new ArrayList();
                Collection b = new ArrayList();
                List c = new ArrayList();

我没有看这相关的视频,就从这里理解, ArrayList 、 Collection 、 List 应该是三个接口,而 ArrayList();实现了这三个接口,
要是理解这个的话,我建议楼主看下抽象类继承的方法,和多态的应用,
这里你可以把接口看成抽象类的话,比较好理解。
这种格式使用了多态中的转型
父类的引用指向子类的对象!
打个比方:abstract class A{}

           class B extends B{}

那么在主函数中你可以这样建立对象使用:A a=new B();
而接口只是抽象类的一个集合,同样也可以这样使用,还有一点接口和抽象类是不能创建实例对象的,如果要使用他们,那只能通过子类来创建实例对象的
回复 使用道具 举报
李桐 高级黑马 2012-11-16 15:14:55
8#
我明白了 是不是面向接口的时候更加灵活一些啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马