Java中接口的作用
轉載於:https://www.zhihu.com/question/20111251
困惑:例如我定義了一個接口,但是我在繼承這個接口的類中還要寫接口的實現方法,那我不如直接就在這個類中寫實現方法豈不是更便捷,還省去了定義接口?接口在java中的作用是什麽?
總結回答:
接口是一種規範
- 軟件開發大多是一個協作性的工作:電器和插座分別是不同人完成的,有了接口大家就能分頭開幹,都按照接口來辦事,各自做完就能輕松地整合到一起。各部分的測試也更加方便。
- 軟件需要不斷演化:今天你用了公牛的插座,過了一年你可能換個西門子的插座,要做沒有這套國家接口標準,各自為政,那估計你是換不了插座了。你想想,咱們每次去美國出差,都得帶個轉接頭,否則就跪了,多不方便啊,因為接口規範不同啊!(這些個轉接頭你是不是聞道一種濃濃的Adapter模式的味道)。
接口在開發過程中可以快速分離工作內容。
比如調用者在寫業務邏輯的時候需要一個功能,可能是數據庫訪問,或者復雜計算,但是他的工作專註於實現業務邏輯,不想分開精力去做底層實現,那麽他只需要先實現一個接口,定義了規範,然後就可以繼續他的業務邏輯代碼了。而實現者可以根據這個接口規範,做具體的實現。
這樣通過使用接口就可以快速的分離工作內容,達到團隊並行工作的目的。
此外,如果規範是通過接口定義的,那麽當你這個功能有多個實現時,你只要實現了這個接口,那麽可以快速的替換具體實現,做到代碼層面的完全可以分離。
接口(英語:Interface),在JAVA編程語言中是一個抽象類型(Abstract Type),它被用來要求類(Class)必須實現指定的方法,使不同類的對象可以利用相同的界面進行溝通。接口通常以interface來宣告,它僅能包含方法簽名(Method Signature)以及常數宣告(變量宣告包含了 static 及 final),一個接口不會包含方法的實現(僅有定義)。
接口無法被實例化,但是可以被實現。一個實現接口的類,必須實現接口內所描述的所有方法,否則就必須宣告為抽象類(Abstract Class)。另外,在Java中,接口類型可用來宣告一個變量,他們可以成為一個空指針,或是被綁定在一個以此接口實現的對象。
接口就是個招牌。
比如說你今年放假出去杭州旅遊,玩了一上午,你也有點餓了,突然看到前面有個店子,上面掛著KFC,然後你就知道今天中飯有著落了。
KFC就是接口,我們看到了這個接口,就知道這個店會賣炸雞腿(實現接口)。
那麽為神馬我們要去定義一個接口涅,這個店可以直接賣炸雞腿啊(直接寫實現方法),是的,這個店可以直接賣炸雞腿,但沒有掛KFC的招牌,我們就不能直接簡單粗暴的沖進去叫服務員給兩個炸雞腿了。
要麽,我們就要進去問,你這裏賣不賣炸雞腿啊,賣不賣漢堡啊,賣不賣聖代啊(這就是反射)。很顯然,這樣一家家的問實在是非常麻煩(反射性能很差)。要麽,我們就要記住,中山路108號賣炸雞,黃山路45號賣炸雞(硬編碼),很顯然這樣我們要記住的很多很多東西(代碼量劇增),而且,如果有新的店賣炸雞腿,我們也不可能知道(不利於擴展)。
Java中接口的作用