搜尋
首頁JavaJava基礎java中list與arraylist的差別

java中list與arraylist的差別

Nov 18, 2019 pm 01:17 PM
arraylistjavalist差別

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)