接口
軟件工程中存在許多情況,當不同的程序員團隊同意一份“合約”來闡明他們的軟件如何交互時很重要,每個組都應該能夠在不知道如何編寫其他組代碼的情況下編寫代碼,一般來說,接口就是這樣的合約。
例如,想象一個未來主義社會,計算機控制的機器人汽車在沒有人工操作員的情況下將乘客運送到城市街道,汽車制造商編寫操作汽車的軟件(當然是Java) - 停止,啟動,加速,向左轉,等等,另一個工業集團,電子制導儀器制造商,使計算機系統接收GPS(全球定位系統)位置數據和無線傳輸交通狀況,并利用該信息來駕駛汽車。
汽車制造商必須發布一個行業標準的接口,詳細說明可以調用什么方法來使汽車移動(任何汽車,來自任何制造商),然后,指導制造商可以編寫調用接口中描述的方法的軟件來命令汽車,工業集團都不需要知道其他集團的軟件是如何實現的,事實上,每個小組都認為其軟件具有高度專有性,并保留隨時修改它的權利,只要它繼續遵守已發布的接口即可。
Java中的接口在Java編程語言中,接口是類似于類的引用類型,它只能包含常量、方法簽名,默認方法、靜態方法和嵌套類型,方法體僅適用于默認方法和靜態方法,接口無法實例化 — 它們只能由類實現或由其他接口繼承,繼承將在本課程后面討論。
定義接口類似于創建新類:
public interface OperateCar { // constant declarations, if any // method signatures // An enum with values RIGHT, LEFT int turn(Direction direction, double radius, double startSpeed, double endSpeed); int changeLanes(Direction direction, double startSpeed, double endSpeed); int signalTurn(Direction direction, boolean signalOn); int getRadarFront(double distanceToCar, double speedOfCar); int getRadarRear(double distanceToCar, double speedOfCar); ...... // more method signatures }
請注意,方法簽名沒有大括號,并以分號結束。
要使用接口,請編寫實現該接口的類,當可實例化的類實現接口時,它為接口中聲明的每個方法提供方法體,例如:
public class OperateBMW760i implements OperateCar { // the OperateCar method signatures, with implementation -- // for example: int signalTurn(Direction direction, boolean signalOn) { // code to turn BMW"s LEFT turn indicator lights on // code to turn BMW"s LEFT turn indicator lights off // code to turn BMW"s RIGHT turn indicator lights on // code to turn BMW"s RIGHT turn indicator lights off } // other members, as needed -- for example, helper classes not // visible to clients of the interface }
在上面的機器人汽車示例中,汽車制造商將實現該接口,當然,雪佛蘭的實現將與豐田的實現大不相同,但兩家制造商都將遵循相同的接口,作為該接口的客戶,導航制造商將構建使用汽車位置GPS數據、數字街道地圖和交通數據驅動汽車的系統,這樣,導航系統將調用接口方法:轉彎,改變車道,制動,加速等。
接口作為API機器人汽車示例顯示了用作行業標準應用程序編程接口(API)的接口,API在商業軟件產品中也很常見,通常,公司銷售的軟件包包含另一家公司希望在其自己的軟件產品中使用的復雜方法。一個例子是銷售給制作最終用戶圖形程序的公司的數字圖像處理方法包,圖像處理公司編寫其類以實現接口,該接口向其客戶公開,然后,圖形公司使用接口中定義的簽名和返回類型調用圖像處理方法。雖然圖像處理公司的API是公開的(對其客戶),但它的API實現仍然是一個嚴密保密的秘密 — 實際上,只要它繼續實現其客戶所依賴的原始接口,它可以在以后修改實現。
接口總結接口聲明可以包含方法簽名、默認方法、靜態方法和常量定義,具有實現的方法只是默認和靜態方法。
實現接口的類必須實現接口中聲明的所有方法。
可以在任何可以使用類型的地方使用接口名稱。
上一篇:注解 下一篇:定義接口文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72551.html
Java? 教程 Java教程是為JDK 8編寫的,本頁面中描述的示例和實踐沒有利用在后續版本中引入的改進。 Java教程是希望使用Java編程語言創建應用程序的程序員的實用指南,其中包括數百個完整的工作示例和數十個課程,相關課程組被組織成教程。 覆蓋基礎知識的路徑 這些教程以書籍的形式提供,如Java教程,第六版,前往Amazon.com購買。 入門 介紹Java技術和安裝Java開發軟件并使用...
集合介紹 本節介紹Java集合框架,在這里,你將了解集合是什么以及它們如何使你的工作更輕松、程序更好,你將了解構成Java集合框架的核心元素 — 接口、實現、聚合操作和算法。 集合 — 有時稱為容器 — 只是一個將多個元素組合到一個單元中的對象,集合用于存儲、檢索、操作和傳遞聚合數據。通常,它們代表形成自然組的數據項,例如撲克牌(卡片集合)、郵件文件夾(信件集合)或電話目錄(名稱到電話號碼的映射)...
集合接口 核心集合接口封裝了不同類型的集合,如下圖所示,這些接口允許獨立于其表示的細節來操縱集合,核心集合接口是Java集合框架的基礎,如下圖所示,核心集合接口形成層次結構。 showImg(https://segmentfault.com/img/bVbntJW?w=402&h=146); Set是一種特殊的Collection,SortedSet是一種特殊的Set,依此類推,另請注意,層次結構...
定義接口 接口聲明由修飾符、關鍵字interface、接口名稱、逗號分隔的父接口列表(如果有)和接口體組成,例如: public interface GroupedInterface extends Interface1, Interface2, Interface3 { // constant declarations // base of natural logar...
Queue接口 Queue是在處理之前保存元素的集合,除了基本的Collection操作外,隊列還提供額外的插入、刪除和檢查操作,Queue接口如下。 public interface Queue extends Collection { E element(); boolean offer(E e); E peek(); E poll(); E remov...
閱讀 1711·2021-11-22 12:09
閱讀 1451·2019-08-30 13:22
閱讀 2082·2019-08-29 17:00
閱讀 2634·2019-08-29 16:28
閱讀 2945·2019-08-26 13:51
閱讀 1174·2019-08-26 13:25
閱讀 3237·2019-08-26 12:14
閱讀 3006·2019-08-26 12:14