更新時間:2019-08-25 16:51:20 來源:動力節(jié)點 瀏覽3217次
今天動力節(jié)點Java學(xué)院小編為大家分享java接口的作用和意義是什么?希望對各位小伙伴有幫助,下面就隨小編一起來看看java接口的作用和意義是什么?
Java接口的定義
接口泛指實體把自己提供給外界的一種抽象化物(可以為另一實體),用以由內(nèi)部操作分離出外部溝通方法,使其能被內(nèi)部修改而不影響外界其他實體與其交互的方式。
人類與電腦等信息機器或人類與程序之間的接口稱為用戶界面。電腦等信息機器硬件組件間的接口叫硬件接口。電腦等信息機器軟件組件間的接口叫軟件接口。
在計算機中,接口是計算機系統(tǒng)中兩個獨立的部件進行信息交換的共享邊界。這種交換可以發(fā)生在計算機軟、硬件,外部設(shè)備或進行操作的人之間,也可以是它們的結(jié)合。
Java接口的優(yōu)勢
一、規(guī)范性
接口就是規(guī)范,在整個系統(tǒng)設(shè)計中,涉及到很多層,為了使各個層之間調(diào)用透明話,你只需要知道接口,按照這個接口做你具體做的事情,就可以融合到整個系統(tǒng)中了。
生活中的例子很多,例如:插頭、插座,有標(biāo)準(zhǔn)的規(guī)范告訴你插頭應(yīng)該是幾個腳,插座是幾個孔等等,做插頭、插座的公司就是根據(jù)這個規(guī)范來做插頭、插座,而不需要做完一個插頭就跑遍全世界去試用一下這個插頭做的對不對。
二、擴展性
在項目開發(fā)過程中,由于客戶的需求經(jīng)常變化,如果不采用接口,那么我們必須不停改寫現(xiàn)有的業(yè)務(wù)代碼。改寫代碼可能產(chǎn)生新的BUG,而且改寫代碼還會影響到調(diào)用該業(yè)務(wù)的類,可能全都需要修改,影響系統(tǒng)本身的穩(wěn)定性。到最后,可能會出現(xiàn)代碼凌亂,不易讀懂,
后接手的人無法讀懂代碼,系統(tǒng)的維護工作越來越重,最終可能導(dǎo)致項目失敗。
三、接口在項目就是一個業(yè)務(wù)邏輯,面向接口編程就是先把客戶的業(yè)務(wù)提取出來,作為接口。業(yè)務(wù)具體實現(xiàn)通過該接口的實現(xiàn)類來完成。當(dāng)客戶需求變化時,只需編寫該業(yè)務(wù)邏輯的新的實現(xiàn)類,不需要改寫現(xiàn)有代碼,減少對系統(tǒng)的影響。從而讓項目具有更大的擴展性。
java接口的定義
接口在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口通常以interface來聲明。一個類通過繼承接口的方式,從而來繼承接口的抽象方法。
接口并不是類,編寫接口的方式和類很相似,但是它們屬于不同的概念。類描述對象的屬性和方法。接口則包含類要實現(xiàn)的方法。
除非實現(xiàn)接口的類是抽象類,否則該類要定義接口中的所有方法。
接口無法被實例化,但是可以被實現(xiàn)。一個實現(xiàn)接口的類,必須實現(xiàn)接口內(nèi)所描述的所有方法,否則就必須聲明為抽象類。另外,在 Java 中,接口類型可用來聲明一個變量,他們可以成為一個空指針,或是被綁定在一個以此接口實現(xiàn)的對象。
java接口的作用
(1)通過接口可以實現(xiàn)不相關(guān)類的相同行為,而不需要了解對象所對應(yīng)的類。
(2)通過接口可以指明多個類需要實現(xiàn)的方法。
(3)通過接口可以了解對象的交互界面,而不需了解對象所對應(yīng)的類。
類描述了一個實體,包括實體的狀態(tài),也包括實體可能發(fā)出的動作。
接口定義了一個實體可能發(fā)出的動作。但是只是定義了這些動作的原型,沒有實現(xiàn),也沒有任何狀態(tài)信息。
所以接口有點象一個規(guī)范、一個協(xié)議,是一個抽象的概念;而類則是實現(xiàn)了這個協(xié)議,滿足了這個規(guī)范的具體實體,是一個具體的概念。
從程序角度,簡單理解,接口就是函數(shù)聲明,類就是函數(shù)實現(xiàn)。需要注意的是同一個聲明可能有很多種實現(xiàn)。
1、接口中定義類方法的原型,但是不能說是空方法,因為空方法的意思是有實現(xiàn)體,只不過實現(xiàn)體是空操作。實際上接口沒有定義任何實現(xiàn)體。具體的實現(xiàn)體都是在實現(xiàn)接口的類中,接口只是定義了這些方法的調(diào)用方式。
你當(dāng)然也可以不用接口,直接在類里面寫方法,但是如果你的一組方法需要在很多類里實現(xiàn),那么把它們抽象出來,做成一個接口規(guī)范,不是更好么?
2、一個類描述了一個實體,這個實體可能是一個復(fù)雜的對象,它的動作很多,如果把這些動作分類,用接口a定義其中的某一組動作,接口b定義其中的另外一組動作,這樣的結(jié)構(gòu),比較清楚。
這種方式具備了多繼承的優(yōu)點,避免了多繼承的缺陷。實際上在歷史上,接口在很大程度上,是為了解決多繼承帶來的種種問題而設(shè)計出來的。
3、包中那些已定義的接口,怎么知道那里面定義了什么方法。
接口里定義了方法的輸入輸出,這些都是協(xié)議,具體的實現(xiàn)都在每個類中。對于很多只需要抽象接口的地方,不需要知道具體的類是什么,只要這個類實現(xiàn)了這個接口就可以了。
java接口的意義
接口會出現(xiàn),最關(guān)鍵的原因應(yīng)該是Java中向上轉(zhuǎn)型的出現(xiàn),因為向上轉(zhuǎn)型,子類中一些父類中不存在的方法(或者說不共用的方法)便不能繼續(xù)調(diào)用了。這樣就很麻煩,我們需要子類中的方法,但是這下該怎么辦呢?
第一種在父類中加子類的方法。但是,這個方法在父類中其實真的沒有必要,方法函數(shù)體都不需要。所以會用抽象方法,這樣就有了抽象方法的誕生。可是就算這樣了,問題還是沒有解決,因為真的太麻煩了,如果有其他的子類要繼承父類,也難免會有向上轉(zhuǎn)型的時候,那么,這個時候難道要一直往父類中加抽象方法么?顯然不合理!
于是就有了第二種方法,接口便誕生了,這也解釋了為什么接口中都是抽象的方法!所以有了接口,子類中需要的方法,但是父類中沒有的方法可以直接用接口來完成,也就不用再修改父類的方法,在多人合作完成一項工程的時候也更加的方便。
java接口的使用
兩個類中的兩個類似的功能,調(diào)用他們的類動態(tài)的決定一種實現(xiàn),那他們提供一個抽象父類,子類分別實現(xiàn)父類所定義的方法。
問題的出現(xiàn):Java是一種單繼承的語言,一般情況下,哪個具體類可能已經(jīng)有了一個超類,解決是給它的父類加父類,或者給它父類的父類加父類,直到移動到類等級結(jié)構(gòu)的最頂端。這樣一來,對一個具體類的可插入性的設(shè)計,就變成了對整個等級結(jié)構(gòu)中所有類的修改。
可插入性
在一個等級結(jié)構(gòu)中的任何一個類都可以實現(xiàn)一個接口,這個接口會影響到此類的所有子類,但不會影響到此類的任何超類。此類將不得不實現(xiàn)這個接口所規(guī)定的方法,而其子類可以從此類自動繼承這些方法,當(dāng)然也可以選擇置換掉所有的這些方法,或者其中的某一些方法,這時候,這些子類具有了可插入性(并且可以用這個接口類型裝載,傳遞實現(xiàn)了他的所有子類)。
我們關(guān)心的不是那一個具體的類,而是這個類是否實現(xiàn)了我們需要的接口。
接口提供了關(guān)聯(lián)以及方法調(diào)用上的可插入性,軟件系統(tǒng)的規(guī)模越大,生命周期越長,接口使得軟件系統(tǒng)的靈活性和可擴展性,可插入性方面得到保證。
類型
使用Java接口將軟件單位與內(nèi)部和外部耦合起來。使用Java接口不是具體的類進行變量的類型聲明,方法的返還類型聲明,參量的類型聲明,以及數(shù)據(jù)類型的轉(zhuǎn)換。
在理想的情況下,一個具體的Java類應(yīng)當(dāng)只實現(xiàn)Java接口和抽象Java類中聲明的方法,而不應(yīng)當(dāng)給多余方法。
等級結(jié)構(gòu)
Java接口(以及抽象類)一般用來作為一個類型的等級結(jié)構(gòu)的起點。
如果一個類已經(jīng)有了一個主要的超類型,那么通過實現(xiàn)一個接口,這個類可以擁有另一個次要的超類型,這種次要的超類型叫做混合類型。
以上就是動力Java學(xué)院小編介紹的"java接口的作用和意義是什么"的內(nèi)容,希望對各位小伙伴有幫助,更多精彩內(nèi)容請關(guān)注動力節(jié)點Java學(xué)院官網(wǎng),每天會有精彩內(nèi)容分享與你。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費 15天面授
有基礎(chǔ) 直達就業(yè)
業(yè)余時間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)
初級 202925
初級 203221
初級 202629
初級 203743