java 面向接口编程的理解
初學者可能在學習中會有很多疑惑,為什么要這樣,明明可以那樣實現(xiàn),這樣做的好處又是什么?
可能會的人覺得很簡單很容易理解,甚至可能覺得問的問題很智障,但對于小白來說可能是苦思冥想都不得其解的。
自己身為初學者也深知初學者的不易,很多問題網(wǎng)上沒有很明確的答案。
自己遇到什么問題想出來后就寫下,也為了便于后來人,畢竟前人種樹后人乘涼。
?
初看容器時,有很多疑問,為什么都用接口作為類型去實現(xiàn)?(List<lnteger> l = new ArrayList<>())
而不直接這樣寫?(ArrayList <Integer> i = new ArrayList<>())
?
我說一下我這個初學者的理解,如有錯誤之處還望指出,不勝感謝!
?
這時就可以把A接口看做是一種要完成的A功能的規(guī)范,實現(xiàn)它的A1類是完成A功能的一種方法,A2類也是完成A功能的一種方法。
然后再我們需要實現(xiàn)A功能時,我們需要根據(jù)具體情況的不同,采用不同的方法去實現(xiàn)這個功能。
這個思想更符合我們?nèi)粘C嫦驅(qū)ο蟮乃枷?#xff0c;先想需要完成什么功能,再想怎么完成這個功能(根據(jù)當前情況選擇合適的方法去完成)。
?
例如我這里需要存儲有序的數(shù)據(jù),那我們先想如何實現(xiàn)這個功能,當然是List接口。
然后根據(jù)我當前的具體情況再想,List接口下那個類更適合當前情況。
是數(shù)組(ArrayList),還是鏈表(LinkedList)方式存儲?
這需要結(jié)合這兩種存放方式的優(yōu)缺點和當前具體需求去決定。
?
舉個更加通俗的例子:
假如我定義一個接口的功能是去圖書館,我再定義幾個實現(xiàn)該接口的類,
有教學樓到去圖書館的類,有食堂去圖書館的類,還有寢室去圖書館的類。
然后我們思考時是先想做什么?去圖書館,這就確定了接口是去圖書館的接口。
然后我們再想怎么去,由于各個人的所在位置的不同,我們就需要根據(jù)當前所在位置的具體情況
去調(diào)用合適的類,我在寢室就用寢室去圖書館的類,我在食堂就調(diào)用食堂去圖書館的類。
?
假如學校擴大了,多了幾個分校區(qū)。去圖書館這個接口我們不需要改動。
只需要添加一個實現(xiàn)了(去圖書館接口)的(分校區(qū)去圖書館的類)就可以了。(類實現(xiàn)接口)
這樣一個具體的功能確定了,即使后來有新的情況需要完成這個功能,我們只需要添加新的類就可以了。
因為功能的確立基本是不變的,是具有普適性的。
?
接口是一個抽象的廣泛的概念,更像是一種宏觀上的東西。
先確定好宏觀層面的東西(接口),然后再想微觀上具體如何實現(xiàn)(實現(xiàn)該接口的類),后續(xù)有新的微觀可以直接加入,因為這個微觀也是從屬于這個宏觀的。
轉(zhuǎn)載于:https://www.cnblogs.com/huang-changfan/p/9613971.html
總結(jié)
以上是生活随笔為你收集整理的java 面向接口编程的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matplotlib嵌入到pyqt中
- 下一篇: jchdl - GSL Port