Java™ 教程(接口)

接口

軟件工程中存在許多狀況,當不一樣的程序員團隊贊成一份「合約」來闡明他們的軟件如何交互時很重要,每一個組都應該可以在不知道如何編寫其餘組代碼的狀況下編寫代碼,通常來講,接口就是這樣的合約。程序員

例如,想象一個將來主義社會,計算機控制的機器人汽車在沒有人工操做員的狀況下將乘客運送到城市街道,汽車製造商編寫操做汽車的軟件(固然是Java) - 中止,啓動,加速,向左轉,等等,另外一個工業集團,電子制導儀器製造商,使計算機系統接收GPS(全球定位系統)位置數據和無線傳輸交通情況,並利用該信息來駕駛汽車。編程

汽車製造商必須發佈一個行業標準的接口,詳細說明能夠調用什麼方法來使汽車移動(任何汽車,來自任何製造商),而後,指導製造商能夠編寫調用接口中描述的方法的軟件來命令汽車,工業集團都不須要知道其餘集團的軟件是如何實現的,事實上,每一個小組都認爲其軟件具備高度專有性,並保留隨時修改它的權利,只要它繼續遵照已發佈的接口便可。segmentfault

Java中的接口

在Java編程語言中,接口是相似於類的引用類型,它只能包含常量、方法簽名,默認方法、靜態方法和嵌套類型,方法體僅適用於默認方法和靜態方法,接口沒法實例化 — 它們只能由類實現或由其餘接口繼承,繼承將在本課程後面討論。編程語言

定義接口相似於建立新類:code

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數據、數字街道地圖和交通數據驅動汽車的系統,這樣,導航系統將調用接口方法:轉彎,改變車道,制動,加速等。get

接口做爲API

機器人汽車示例顯示了用做行業標準應用程序編程接口(API)的接口,API在商業軟件產品中也很常見,一般,公司銷售的軟件包包含另外一家公司但願在其本身的軟件產品中使用的複雜方法。一個例子是銷售給製做最終用戶圖形程序的公司的數字圖像處理方法包,圖像處理公司編寫其類以實現接口,該接口向其客戶公開,而後,圖形公司使用接口中定義的簽名和返回類型調用圖像處理方法。雖然圖像處理公司的API是公開的(對其客戶),但它的API實現仍然是一個嚴密保密的祕密 — 實際上,只要它繼續實現其客戶所依賴的原始接口,它能夠在之後修改實現。產品

接口總結

接口聲明能夠包含方法簽名、默認方法、靜態方法和常量定義,具備實現的方法只是默認和靜態方法。it

實現接口的類必須實現接口中聲明的全部方法。

能夠在任何可使用類型的地方使用接口名稱。


上一篇:註解

下一篇:定義接口

相關文章
相關標籤/搜索