java 面向介面編程的理解

來源:互聯網
上載者:User

標籤:數組   怎麼   有序   學習   錯誤   編程   規範   學校   不同的   

初學者可能在學習中會有很多疑惑,為什麼要這樣,明明可以那樣實現,這樣做的好處又是什嗎?

可能會的人覺得很簡單很容易理解,甚至可能覺得問的問題很智障,但對於小白來說可能是苦思冥想都不得其解的。

自己身為初學者也深知初學者的不易,很多問題網上沒有很明確的答案。

自己遇到什麼問題想出來後就寫下,也為了便於後來人,畢竟前人種樹後人乘涼。

 

初看容器時,有很多疑問,為什麼都用介面作為類型去實現?(List<lnteger> l = new ArrayList<>())

而不直接這樣寫?(ArrayList <Integer> i = new ArrayList<>())

 

我說一下我這個初學者的理解,如有錯誤之處還望指出,不勝感謝!

 

這時就可以把A介面看做是一種要完成的A功能的規範,實現它的A1類是完成A功能的一種方法,A2類也是完成A功能的一種方法。

然後再我們需要實現A功能時,我們需要根據具體情況的不同,採用不同的方法去實現這個功能。

這個思想更符合我們日常物件導向的思想,先想需要完成什麼功能,再想怎麼完成這個功能(根據當前情況選擇合適的方法去完成)。

 

例如我這裡需要儲存有序的資料,那我們先想如何?這個功能,當然是List介面。

然後根據我當前的具體情況再想,List介面下那個類更適合當前情況。

是數組(ArrayList),還是鏈表(LinkedList)方式儲存?

這需要結合這兩種存放方式的優缺點和當前具體需求去決定。

 

舉個更加通俗的例子:

假如我定義一個介面的功能是去圖書館,我再定義幾個實現該介面的類,

有教學樓到去圖書館的類,有食堂去圖書館的類,還有寢室去圖書館的類。

然後我們思考時是先想做什嗎?去圖書館,這就確定了介面是去圖書館的介面。

然後我們再想怎麼去,由於各個人的所在位置的不同,我們就需要根據當前所在位置的具體情況

去調用合適的類,我在寢室就用寢室去圖書館的類,我在食堂就調用食堂去圖書館的類。

 

假如學校擴大了,多了幾個分校區。去圖書館這個介面我們不需要改動。

只需要添加一個實現了(去圖書館介面)的(分校區去圖書館的類)就可以了。(類實現介面)

這樣一個具體的功能確定了,即使後來有新的情況需要完成這個功能,我們只需要添加新的類就可以了。

因為功能的確立基本是不變的,是具有普適性的。

 

介面是一個抽象的廣泛的概念,更像是一種宏觀上的東西。

先確定好宏觀層面的東西(介面),然後再想微觀上具體如何?(實現該介面的類),後續有新的微觀可以直接加入,因為這個微觀也是從屬於這個宏觀的。

java 面向介面編程的理解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.