2014-05-04 100 views
3

我知道一般:是什麼要求和提供的接口之間的差異

的接口是引用類型,它類似於一個類, 可以只包含常量,方法簽名,默認的方法,靜態方法和嵌套類型。方法體只存在於默認方法和靜態方法中。接口不能實例化 - 它們只能由類實現或由其他接口擴展?

但是需求和提供的接口有什麼區別?

+2

你從哪裏閱讀過「必需和提供的接口」? –

+0

@Duncan:是的,他們可以在Java 8中使用。默認方法在Java 8中也是新的東西。 –

+0

@JBNizet啊,我聽說過有關默認方法,沒有注意到靜態方法已經到來! –

回答

3

所需和提供的接口似乎與UML有關的術語,其中提供的接口描述了由類提供的功能,並且所需接口描述了另一個類所需的功能:further reading

在Java中,所有接口都是相同的;沒有提供/要求之間的區別。

7

提供的和需要的接口總是指接口的概念,表示觀點。

我希望下面的圖表能夠闡明這個問題。

enter image description here

在implmentation水平提供接口是由類實現的接口(在最常識,例如B類實現的接口I)。 所需的接口可以是任何組件使用接口的方式(例如,如果A類定義了接口I作爲參數的方法,這意味着類A具有所需的接口I)。

+0

我明白了...所以需要關注的是如果界面沒有被修改,那麼顯示一個類不能正常工作。它是一個生死攸關的問題。對於提供它的班級來說,如果沒有這個班級,班級可能會「生存」,但是爲了與其他班級相處「不錯」而提供它。如果這是正確的,你能說清楚一點嗎?也許用一個更明確的例子:一個飢餓的傢伙,如果沒有食物就會死亡,一個現在不需要的人,但是會做第一個幫助第一個傢伙的額外工作 – user9589

+0

PPAP:)... ..... –

2

我認爲你是混淆一般意義上的接口和語言特定的結構,也稱爲接口。

一般意義上的接口意味着兩個零件/物體/系統之間的過程點。在非常低的層次上,你可以說一個對象的所有公共成員(方法+字段)組成它的內在面。

在較高的抽象層次上,程序員經常會將API視爲庫/系統的接口。但這並不意味着這個API只包含一個Java接口。該API包含所有對象,方法,contsructors,配置文件......這些都是圖書館用戶使用的必要條件。這可能是您需要的和提供的界面所需要的。

如果你編寫java庫文件,你通常需要Java標準庫的API(包中的所有東西) - 這將是必需的接口。 (它可以由任何實現的JVM提供,例如Android使用的是與Java相同的接口,但它不是Java)另一方面,您的庫還會公開一些接口 - 人們可以使用庫的方式 - 這將是稱爲提供的接口。 (同樣,如果我說接口,我不是指一個Java接口,它可能是幾個接口+實現+一些值類的混合)

您可能遇到的另一個術語是SPI Service Provider Interface,它與API類似,但SPI的用戶不會調用此接口,而是實現它並將其暴露給原始系統。這是一種描述插件界面的方法。

相關問題