java 面向接口編程的理解


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

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

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

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

 

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

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

 

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

 

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

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

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

 

例如我這里需要存儲有序的數據,那我們先想如何實現這個功能,當然是List接口。

然后根據我當前的具體情況再想,List接口下那個類更適合當前情況。

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

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

 

舉個更加通俗的例子:

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

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

然后我們思考時是先想做什么?去圖書館,這就確定了接口去圖書館接口

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

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

 

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

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

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

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

 

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM