java 實現介面(翻譯自Java Tutorials)

來源:互聯網
上載者:User

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

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

聲明一個類實現介面,要在類聲明中包含一個implements語句。類可以實現多個介面,所以implements關鍵字尾隨一個逗號隔開的由該類實現的介面。按照慣例,如果有父類繼承,implements語句尾隨extend語句。

 

一個簡單的介面,Relatable

考慮下面的介面定義如果比較對象的大小

public interface Relatable {            // this (object calling isLargerThan)    // and other must be instances of     // the same class returns 1, 0, -1     // if this is greater // than, equal     // to, or less than other    public int isLargerThan(Relatable other);}

如果你要對比兩個相似的對象的大小,不用管他們是什麼,執行個體化的類應該實現Relatable介面。

任何類,只有它有方法可以比較執行個體化的對象的大小,都可以實現Relatable。對於strings,它可以比較字元的個數,對於書,可以比較頁數,對於學生,可以比較體重等等。對於平面的幾何對象,面積將是一個不錯的選擇(見下面的RectanglePlus類的),對於三維幾何對象可以使用體積對比。所有這些類可以實現isLargerThan()方法。

  實現Relatable 介面

這裡是一個Rectangle介面的實現:

public class RectanglePlus     implements Relatable {    public int width = 0;    public int height = 0;    public Point origin;    // four constructors    public RectanglePlus() {        origin = new Point(0, 0);    }    public RectanglePlus(Point p) {        origin = p;    }    public RectanglePlus(int w, int h) {        origin = new Point(0, 0);        width = w;        height = h;    }    public RectanglePlus(Point p, int w, int h) {        origin = p;        width = w;        height = h;    }    // a method for moving the rectangle    public void move(int x, int y) {        origin.x = x;        origin.y = y;    }    // a method for computing    // the area of the rectangle    public int getArea() {        return width * height;    }        // a method required to implement    // the Relatable interface    public int isLargerThan(Relatable other) {        RectanglePlus otherRect             = (RectanglePlus)other;        if (this.getArea() < otherRect.getArea())            return -1;        else if (this.getArea() > otherRect.getArea())            return 1;        else            return 0;                   }}

因為RectanglePlus實現了Relatable,所以任何兩個RectanglePlus對象都可以比較大小

注意:Relatable介面定義的方法isLargerThan,只能接受Relatable類型的對象。轉換other為RectanglePlus執行個體的那行代碼。類型轉換告訴編譯器,對象實際是什麼類型。直接調用other執行個體的other.getArea()方法將會失敗,因為編譯器不知道other真正是RectanglePlus執行個體。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.