實(shí)現(xiàn)接口
要聲明實(shí)現(xiàn)接口的類,請(qǐng)?jiān)陬惵暶髦邪?b>implements子句,你的類可以實(shí)現(xiàn)多個(gè)接口,因此implements關(guān)鍵字后面跟著由類實(shí)現(xiàn)的接口的逗號(hào)分隔列表,按照慣例,如果有extends子句,則implements子句緊跟其后。
樣例接口,Relatable考慮一個(gè)定義如何比較對(duì)象大小的接口。
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); }
如果你希望能夠比較類似對(duì)象的大小,無論它們是什么,實(shí)例化它們的類都應(yīng)該實(shí)現(xiàn)Relatable。
如果有某種方法來比較從類中實(shí)例化的對(duì)象的相對(duì)“大小”,任何類都可以實(shí)現(xiàn)Relatable,對(duì)于字符串,它可以是字符數(shù),對(duì)于書籍,它可以是頁(yè)數(shù),對(duì)于學(xué)生來說,它可能是重量,等等。對(duì)于平面幾何對(duì)象,面積將是一個(gè)不錯(cuò)的選擇(參見后面的RectanglePlus類),而體積適用于三維幾何對(duì)象,所有這些類都可以實(shí)現(xiàn)isLargerThan()方法。
如果你知道某個(gè)類實(shí)現(xiàn)了Relatable,那么你就知道可以比較從該類實(shí)例化的對(duì)象的大小。
實(shí)現(xiàn)Relatable接口這是在創(chuàng)建對(duì)象部分中展現(xiàn)的Rectangle類,為實(shí)現(xiàn)Relatable而重寫。
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; } }
因?yàn)?b>RectanglePlus實(shí)現(xiàn)了Relatable,所以可以比較任何兩個(gè)RectanglePlus對(duì)象的大小。
isLargerThan方法(在Relatable接口中定義)采用Relatable類型的對(duì)象,示例中other轉(zhuǎn)換為RectanglePlus實(shí)例,類型轉(zhuǎn)換告訴編譯器對(duì)象到底是什么,直接在other實(shí)例上調(diào)用getArea(other.getArea())將無法編譯,因?yàn)榫幾g器不理解other實(shí)際上是RectanglePlus的實(shí)例。上一篇:定義接口 下一篇:將接口用作類型
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72881.html
Java? 教程 Java教程是為JDK 8編寫的,本頁(yè)面中描述的示例和實(shí)踐沒有利用在后續(xù)版本中引入的改進(jìn)。 Java教程是希望使用Java編程語(yǔ)言創(chuàng)建應(yīng)用程序的程序員的實(shí)用指南,其中包括數(shù)百個(gè)完整的工作示例和數(shù)十個(gè)課程,相關(guān)課程組被組織成教程。 覆蓋基礎(chǔ)知識(shí)的路徑 這些教程以書籍的形式提供,如Java教程,第六版,前往Amazon.com購(gòu)買。 入門 介紹Java技術(shù)和安裝Java開發(fā)軟件并使用...
集合介紹 本節(jié)介紹Java集合框架,在這里,你將了解集合是什么以及它們?nèi)绾问鼓愕墓ぷ鞲p松、程序更好,你將了解構(gòu)成Java集合框架的核心元素 — 接口、實(shí)現(xiàn)、聚合操作和算法。 集合 — 有時(shí)稱為容器 — 只是一個(gè)將多個(gè)元素組合到一個(gè)單元中的對(duì)象,集合用于存儲(chǔ)、檢索、操作和傳遞聚合數(shù)據(jù)。通常,它們代表形成自然組的數(shù)據(jù)項(xiàng),例如撲克牌(卡片集合)、郵件文件夾(信件集合)或電話目錄(名稱到電話號(hào)碼的映射)...
接口 軟件工程中存在許多情況,當(dāng)不同的程序員團(tuán)隊(duì)同意一份合約來闡明他們的軟件如何交互時(shí)很重要,每個(gè)組都應(yīng)該能夠在不知道如何編寫其他組代碼的情況下編寫代碼,一般來說,接口就是這樣的合約。 例如,想象一個(gè)未來主義社會(huì),計(jì)算機(jī)控制的機(jī)器人汽車在沒有人工操作員的情況下將乘客運(yùn)送到城市街道,汽車制造商編寫操作汽車的軟件(當(dāng)然是Java) - 停止,啟動(dòng),加速,向左轉(zhuǎn),等等,另一個(gè)工業(yè)集團(tuán),電子制導(dǎo)儀器制造商...
集合接口 核心集合接口封裝了不同類型的集合,如下圖所示,這些接口允許獨(dú)立于其表示的細(xì)節(jié)來操縱集合,核心集合接口是Java集合框架的基礎(chǔ),如下圖所示,核心集合接口形成層次結(jié)構(gòu)。 showImg(https://segmentfault.com/img/bVbntJW?w=402&h=146); Set是一種特殊的Collection,SortedSet是一種特殊的Set,依此類推,另請(qǐng)注意,層次結(jié)構(gòu)...
Queue接口 Queue是在處理之前保存元素的集合,除了基本的Collection操作外,隊(duì)列還提供額外的插入、刪除和檢查操作,Queue接口如下。 public interface Queue extends Collection { E element(); boolean offer(E e); E peek(); E poll(); E remov...
閱讀 667·2019-08-30 15:44
閱讀 1388·2019-08-30 11:02
閱讀 2996·2019-08-29 18:42
閱讀 3517·2019-08-29 16:16
閱讀 1725·2019-08-26 13:55
閱讀 1779·2019-08-26 13:45
閱讀 2393·2019-08-26 11:43
閱讀 3257·2019-08-26 10:32