首頁  >  文章  >  Java  >  java中list與arraylist的差別

java中list與arraylist的差別

王林
王林原創
2019-11-18 13:17:232211瀏覽

java中list與arraylist的差別

區別:

List是一個接口,而ArrayList是List接口的實作類別。 ArrayList類別繼承並實作了List介面。

因此,List接口不能被構造,也就是我們說的不能創建實例對象,但是我們可以像下面那樣為List接口創建一個指向自己的對象引用,而ArrayList實現類的實例對象就在這充當了這個指向List介面的物件參考。 

Animals.java
public  abstract class Animals {
    //动物名字
    String name;
    //动物叫声
    public  void shout(){
        System.out.println("叫声----");
    }
}

Dog.java
public class Dog extends Animals {
    //狗类独有的方法
    public void guard(){
        System.out.println("狗独有的看门本领");
    }
}

Test.java
public class Test {

    public static void main(String[] args) throws ClassNotFoundException {
        Animals a1 = new Animals();
        Animals a2 = new Dog();
    }
}

java中list與arraylist的差別

List list;//正确,list = null;
List list = new List();//是错误的用法

List list = new ArrayList();

這句話建立了一個ArrayList實作類別的物件後把它上溯到了List介面。此時它就是一個List物件了,它有些ArrayList類別具有的,但是List介面沒有的屬性和方法,它就不能再用了,而

ArrayList list=newArrayList();

創建一物件則保留了ArrayList的所有屬性和方法。 

Test.java
public class Test {

    public static void main(String[] args) throws ClassNotFoundException {
        Animals a2 = new Dog();
        a2.shout();
        a2.guard();
    }
}

java中list與arraylist的差別

父類別不能再呼叫父類別出現而子類別沒有出現的方法。否則會編譯出錯。

如果是下面這個樣子的:

List a=new ArrayList();

則a擁有List的所有屬性和方法,不會擁有其實作類別ArrayList的獨有的屬性和方法。

如果List與ArrayList中有相同的屬性(如int i),有相同的方法(如void f()),

則a.i是呼叫了List中的i,a.f ()是呼叫了ArrayList中的f();

問題的關鍵:

為什麼要用 List list = new ArrayList() 而不用 ArrayList alist = new ArrayList()呢?

問題就在於List介面有多個實作類,現在你用的是ArrayList,也許哪一天你需要換成其它的實作類,如:

LinkedList或Vector等等,這時你只要改變這一行就行了: List list = new LinkedList(); 其它使用了list地方的程式碼根本不需要改變。

假設你開始用ArrayList alist = new ArrayList(), 這下你有的改了,特別是如果你使用了ArrayList實作類別特有的方法和屬性。

推薦教學:Java教學

以上是java中list與arraylist的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:java jdk在哪下一篇:java jdk在哪