老师我想问下关于List的问题

老师我想问下关于List的问题

http://img1.sycdn.imooc.com//climg/5cea031b0001e77512370238.jpg

http://img1.sycdn.imooc.com//climg/5cea033800016b3009680708.jpg

以及这里,都是用List list=new ArrayList();

这是为什么呢?为什么不直接用ArrayList list=new ArrayList();呢?

这又不是写DAO和Impl,为啥要这样用List引用去指向一个ArrayList呢?

我知道List是接口,ArrayList是List接口的其中一个实现类

用List list=new ArrayList();这样写有什么好处吗?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学很棒,

你的理解都是正确的呢~

祝:学习愉快~

吃吃吃鱼的猫 2019-05-26 14:22:57

同学你好,

面向对象编程,是针对抽象(接口),而非具体。

List 是接口,ArrayList是实现。

实现List接口的有ArrayList、LinkedList、Vector等,所以用哪个就直接new 一个接口实现。大大提高了代码使用的灵活性。

比如,你若希望用LinkedList的实现来替代ArrayList的话,只需改动一行即可: 

List   list   =   new   LinkedList();

 而程序中的其它部分不需要改动,这样比较灵活,不会失去通用性。

不过有的时候,你如果能确定后边用的全部是ArrayList,建议使用:

ArrayList list = new ArrayList();

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 MasonM #1
    噢,意思是,如果用List list=new ArrayList();的话,可以方便后面如果需要用别的实现类,如LinkedList、Vector等的时候,可以直接new、LinkedList、Vector等的对象就可以了?
    2019-05-26 15:03:27
  • 提问者 MasonM #2
    我还想问一下,如果用List list=new ArrayList();的话,ArrayList里新增的方法(List接口中没有的方法),是不是就没法用了? 只能用List接口里定义好(ArrayList重写了的方法)的方法吗?
    2019-05-26 15:06:41
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师