為什麼是List listnew ArrayList,而不直接用ArrayList

2022-09-14 13:36:56 字數 2800 閱讀 3555

1樓:匿名使用者

滿足設計模式中的:里氏代換原則:面向介面程式設計,而不面向實際實現程式設計。

list是個介面,他的實現典型的就是 arraylist與linkedlist。

加入要更換成linkedlist的時候方便,修改一個地方就行。

為什麼是list list = new arraylist,而不直接用arraylist

2樓:吉祥二進位制

面向介面程式設計思想。

首先,面向介面程式設計和麵向物件程式設計並不是平級的,它並不是比物件導向程式設計更先進的一種獨立的程式設計思想,而是附屬於物件導向思想體系,屬於其一部分。或者說,它是物件導向程式設計體系中的思想精髓之一。

// 1.這樣你就只能呼叫list介面裡面定義好的方法,而不能使用你自己在arraylist擴充套件的方法。

list list = new arraylist();

// 2.這樣你可以使用自己在arraylist類上擴充套件的方法

arraylist list = new arraylist();

// 介面就是定義了一些行為,它要求你應該做什麼。

// 假如你採用了面向介面程式設計方式,也就是第一種方式:list list = new arraylist();

// 就能通過介面很大限度上規範開發人員的實現規則,因為你現在只能呼叫介面的方法。

j**a宣告問題:list list=new arraylist();為甚麼要宣告為list 而不是arraylist?

3樓:

這個嗎 是為了以後擴充套件時

候用的 比如你已經像上面那樣寫了

你還可以這樣寫

listlist = new linkedlist();

因為linkedlist也是從list繼承來的 就那裝水來說吧你一開始用的水桶,後來不想用水桶了,那你可以用被子來裝啊 因為他們都是盛水的東西

這個比較形象了 希望對你有幫助!

list list = new arraylist();和arraylist list=new arraylist();的區別

4樓:ǒ蒍禰變乖

list是一個介面,而arraylist 是一個類。 arraylist 繼承並實現了list。

list list = new arraylist();這句建立了一個arraylist的物件後把上溯到了list。此時它是一個list物件了,有些arraylist有但是list沒有的屬性和方法,它就不能再用了。而arraylist list=new arraylist();建立一物件則保留了arraylist的所有屬性。

為什麼一般都使用 list list = new arraylist() ,而不用 arraylist alist = new arraylist()呢?

問題就在於list有多個實現類,如 linkedlist或者vector等等,現在你用的是arraylist,也許哪一天你需要換成其它的實現類呢?,這時你只要改變這一行就行了:list list = new linkedlist(); 其它使用了list地方的**根本不需要改動。

假設你開始用 arraylist alist = new arraylist(), 這下你有的改了,特別是如果你使用了 arraylist特有的方法和屬性。 ,如果沒有特別需求的話,最好使用list list = new linkedlist(); ,便於程式**的重構. 這就是面向介面程式設計的好處

5樓:匿名使用者

list list = new arraylist();

等號左邊為編譯時型別(也就是說,在程式未執行時list只能當做list型別)

等號右邊看作執行時型別(也就是說,在程式執行時jvm會把list當做arraylist型別)

6樓:寒霜邀月

第一種方法宣告的list只能呼叫list介面裡宣告的方法,第二種方法宣告的list可以使用arraylist類中特有的方法

7樓:匿名使用者

list是介面,arraylist是實現類。

後者沒有錯,不過一般推薦用前者。

8樓:匿名使用者

arraylist在list大集合裡面

泛型的一些問題: arraylist list= new arraylist();為什麼報錯啊

9樓:匿名使用者

泛型中前後的型別必須保持一致。

解釋:integer型別是int型別的包裝類,也就是說integer是物件,不屬於基本的引數型別。number型別是數值型別,他們是不一樣的型別,所以肯定是報錯的。

解決方法:根據實際需要,只保留一種型別即可,或者直接用預設泛型「t」,之後在通過賦值的形式重新定義使用number還是integer。

10樓:匿名使用者

arraylist list = new arraylist();

此時list等同於arraylist型別

arraylistlist2 = new arraylist();

指定了list2只能存放integer型別泛型的具體型別限制是受制於前面的宣告,而不限於後面new出來的型別,之所以出現這兩種寫法,是為了保持相容性,安全性檢查就要自己考慮了。

arraylistlist= new arraylist();

這種編譯的時候型別只能存放number型別, 這個是泛型定義死的,只能存放number型別,

活著是為什麼,活著是為什麼?

一個要 的人,你覺得他到處再問人,有什麼東西可以太我吃飽 這是一個什麼性質。沒錢,沒長像 沒學歷,沒文化,甚至連最 起碼的做人原則也沒有,或者嚴重點所謂的素質也沒有了。那才不會完全吸引別人的眼光。而至少有一樣還在的人,終會有一天遇到欣賞他的人。只是時候不到,5分命,5分努力,你看,你佔了多少。有的人...

活著是為什麼,活著為什麼?什麼是人生?

人活著就是為了實現自己存在的價值。人生,怎麼走,看自己吧,只有經歷過一些事情才能確定自己的方向,別人的經歷不是自己的,因為每個人的人生都是不同的,我不能決定你的人生走向,只能告訴你,人生,也許會走得很痛苦,也許很快樂,但是,總要自己走過才知道 才能明白其真正的意義 帶著責任感去生活,你就知道活著的意...

天為什麼是藍的,草為什麼是綠的,花為什麼是紅的,人生為什麼是悲傷的?謝謝了,大神幫忙啊

天因為陽光而藍草因為陽光而綠,人因為陽光而悲傷 因為 天想是藍的就是藍的了,草要是綠的就是綠的了,花覺得紅的好就是紅的了,但人那時候還是猴子,不會說話 就係統預設了!系統預設的 就是悲傷的!天是藍的,是因為天氣 花是紅的,是因為它本身就那樣 人是悲傷的,是因為你以成杯具了 事情很簡單只不過複雜化了 ...