1. 程式人生 > >Java中接口的作用

Java中接口的作用

完成 業務 測試 新的 我不 是什麽 sign 綁定 可用

轉載於:https://www.zhihu.com/question/20111251

困惑:例如我定義了一個接口,但是我在繼承這個接口的類中還要寫接口的實現方法,那我不如直接就在這個類中寫實現方法豈不是更便捷,還省去了定義接口?接口在java中的作用是什麽?

總結回答:

接口是一種規範

  • 軟件開發大多是一個協作性的工作:電器和插座分別是不同人完成的,有了接口大家就能分頭開幹,都按照接口來辦事,各自做完就能輕松地整合到一起。各部分的測試也更加方便。
  • 軟件需要不斷演化:今天你用了公牛的插座,過了一年你可能換個西門子的插座,要做沒有這套國家接口標準,各自為政,那估計你是換不了插座了。你想想,咱們每次去美國出差,都得帶個轉接頭,否則就跪了,多不方便啊,因為接口規範不同啊!(這些個轉接頭你是不是聞道一種濃濃的Adapter模式的味道)。
而你所說的,直接寫實現的方式在確定性的場景下當然也可以,不涉及到分工協作、變化性、測試方便等因素時,當然用不著接口了。比如一般情況下你犯不著為一個Pojo的getter和setter也弄個接口和實現分離。

接口在開發過程中可以快速分離工作內容。

比如調用者在寫業務邏輯的時候需要一個功能,可能是數據庫訪問,或者復雜計算,但是他的工作專註於實現業務邏輯,不想分開精力去做底層實現,那麽他只需要先實現一個接口,定義了規範,然後就可以繼續他的業務邏輯代碼了。而實現者可以根據這個接口規範,做具體的實現。
這樣通過使用接口就可以快速的分離工作內容,達到團隊並行工作的目的。

此外,如果規範是通過接口定義的,那麽當你這個功能有多個實現時,你只要實現了這個接口,那麽可以快速的替換具體實現,做到代碼層面的完全可以分離。

總結起來就一句話:接口或者規範可以在開發過程中做到分離。

接口(英語:Interface),在JAVA編程語言中是一個抽象類型(Abstract Type),它被用來要求(Class)必須實現指定的方法,使不同類的對象可以利用相同的界面進行溝通。接口通常以interface來宣告,它僅能包含方法簽名(Method Signature)以及常數宣告(變量宣告包含了 staticfinal),一個接口不會包含方法的實現(僅有定義)。

接口無法被實例化,但是可以被實現。一個實現接口的類,必須實現接口內所描述的所有方法,否則就必須宣告為抽象類(Abstract Class)。另外,在Java中,接口類型可用來宣告一個變量,他們可以成為一個空指針,或是被綁定在一個以此接口實現的對象。


接口就是個招牌。

比如說你今年放假出去杭州旅遊,玩了一上午,你也有點餓了,突然看到前面有個店子,上面掛著KFC,然後你就知道今天中飯有著落了。

KFC就是接口,我們看到了這個接口,就知道這個店會賣炸雞腿(實現接口)。

那麽為神馬我們要去定義一個接口涅,這個店可以直接賣炸雞腿啊(直接寫實現方法),是的,這個店可以直接賣炸雞腿,但沒有掛KFC的招牌,我們就不能直接簡單粗暴的沖進去叫服務員給兩個炸雞腿了。

要麽,我們就要進去問,你這裏賣不賣炸雞腿啊,賣不賣漢堡啊,賣不賣聖代啊(這就是反射)。很顯然,這樣一家家的問實在是非常麻煩(反射性能很差)。
要麽,我們就要記住,中山路108號賣炸雞,黃山路45號賣炸雞(硬編碼),很顯然這樣我們要記住的很多很多東西(代碼量劇增),而且,如果有新的店賣炸雞腿,我們也不可能知道(不利於擴展)。


Java中接口的作用