ArrayList list = new ArrayList();和List list 的区别

oracleperl 2021-05-14 09:28:51
请教ArrayList<String> list = new ArrayList<String>();
和List<String> list = new ArrayList<String>();有啥区别?
谢谢
...全文
409 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
NewMoons 2021-05-15
  • 打赏
  • 举报
回复
区别就是第一个list可以调用ArrayList类的所有公共方法和公共属性。
但第二个list只能调用List的的所有公共方法和公共属性。
ArrayList作为List接口的实现类肯定包含了List所有的方法和属性,而且有自己额外的方法和属性。
这就是面向对象编程语言的一个典型应用,多态。
子类实例可以自动转换赋值给父类对象或接口类

明明第一个定义包含了第二个定义的所有需要,为什么有时候我们又需要使用第二个方式来定义变量呢?
因为有时候我们确定用List这个接口的所有方法和属性就能搞定需求了,为了减少耦合,所以用第二个更合适。
这也是接口的意义所在,为什么叫接口?你怎么实现我不管(ArrayList、LinkedList。。。。。),实现我的接口方法就行。
虽然接口方法一样,不同的实现类会有不同的内部实现方法,比如List实际是集合概念,有的注重查询效率(ArrayList数组集合),有的注重修改效率(LinkedList链表集合),你就可以根据你的需求场景选择合适的实现类。

当然,有时候实现类有自己额外特殊实现的公共方法或属性,使用List无法调用,而需求场景确实需要某个实现类,那就用第一种定义,也无可厚非。
但绝大部分情况下,尽可能的选择第二种定义,这也是为什么使用接口的意义所在,尽可能的让实现精简,减少耦合,以提高代码的复用性!

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧