java 介面(翻譯自Java Tutorials)

來源:互聯網
上載者:User

原文出自 http://www.cnblogs.com/ggjucheng/archive/2012/12/04/2802086.html

英文出自 http://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html

軟體工程的許多情況是,不同群組的程式員同意一個說明他們的軟體如何互動的”合約”。每個組都應該能夠在寫自己的代碼時,不需要瞭解其他組的代碼如何寫。通常說,介面就是這個合約。

例如,想像未來的社會中,電腦控制的機械機車,無需人工操作,通過城市街道運輸乘客。汽車製造商編寫軟體(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}

在上面的機器人例子,汽車製造商實現介面。Chevrolet的實現顯然不同於Toyota,但是兩個製造商都會遵循一樣的介面。指導製造商是介面的客戶,構建一個使用汽車位置的GPS資料,數字街道地圖,交通資料驅動汽車的系統。做上述事情,指導系統將會調用介面方法:turn, change lanes, brake, accelerate等等。

 

API作為介面

機器人汽車例子示範了工業標準應用程式編程介面(API)的使用。API是常見的商業軟體產品。一個公司賣軟體包會包含典型的複雜的方法,其他公司會在他們自己的軟體包使用它們,這個是很典型的。一個例子是,數位影像處理方法打包賣給做終端使用者圖形程式的公司。影像處理公司寫自己的類實現介面,發布給它的客戶。圖形公司通過介面的簽名和傳回值調用影像處理方法。當影像處理公司的API是public(對於它的客戶),它的API實現是接近嚴格保密的--事實上,它可以修改實現,一直到它繼續實現客戶依賴的介面。

  介面和多繼承

介面在java程式設計語言中,有很重要的另一個角色。介面不是類層次的一部分,儘管可以和類聯合工作。java程式設計語言不允許多繼承,但是介面提供一個替代方案。

java中,類只能繼承一個類,但是它可以實現多個介面。所以,對象可以有多種類型:類本身的類型和實現的介面的所有類型。這意味著如果變數聲明為該介面的類型,它的值也可以引用任何實現了該介面的類的執行個體化的對象。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.