java arraylist 与list_Java List与ArrayList的关系

List是一个接口,而ArrayList是List接口的一个实现类。

ArrayList继承并实现了List接口。因此,List接口不能被构造,也就是我们所说的不能创建实例对象。但我们可以为List接口创建一个指向自己的对象引用。而ArrayList实现类的实例对象就在这里充当了这个指向List接口的对象引用。

我们知道接口和抽象类不能被实例化,但可以创建一个指向自己的对象引用。

class Test{

public static void main(String[] args){

Animal a1 = new Animal();//编译出错

Animal a2 = new Dog();

}

}

abstract class Animal{

//动物名字

String name;

//动物叫声

public void shout(){

System.out.println("叫声...");

}

}

class Dog extends Animal{

//狗类独有的方法

public void guard(){

System.out.println("狗有看门的独特本领!");

}

}

List list;//正确,list = null;

List list = new List();//错误

List list = new ArrayList();//创建了一个ArrayList实现类的对象把它上溯到了List接口。现在它就是一个List对象了,只能只用List的属性和方法。而ArrayList list = new ArrayList();则保留了ArrayList的所有属性和方法。

List l1 = new ArrayList();

l1 拥有List的所有属性和方法,不会拥有其实现类ArrayList独有的属性和方法。

如果List与ArrayList有相同的属性(i),和相同的方法(void f()),则l1.i是调用了List中的i,l1.f()是调用了ArrayList中的f()。

关键:为什么要用List list = new ArrayList();而不用ArrayList list = new ArrayList()?

因为List有多个实现类,假设现在用的是Arraylist,之后如果要换为其他的实现类,如LinkedList,Vector等,只需改变这一行就可以了:List list = new LinkedList();其他使用List地方的代码则不需改动。假设用ArrayList list = new ArrayList();如果使用了ArrayList特有的方法和属性,则都需改动。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值