大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 實(shí)例分析Java接口實(shí)現(xiàn)

實(shí)例分析Java接口實(shí)現(xiàn)

更新時(shí)間:2020-10-16 17:35:20 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1325次

說(shuō)到Java接口實(shí)現(xiàn),我們先來(lái)通過(guò)一個(gè)例子來(lái)明確Java中接口的概念,這個(gè)例子是"比較",很多對(duì)象都可以比較,對(duì)于求最大值、求最小值、排序的程序而言,它們其實(shí)并不關(guān)心對(duì)象的類(lèi)型是什么,只要對(duì)象可以比較就可以了,或者說(shuō),它們關(guān)心的是對(duì)象有沒(méi)有可比較的能力。


Java API中提供了Comparable接口,以表示可比較的能力,但它使用了泛型,而我們還沒(méi)有介紹泛型,所以本節(jié),我們自己定義一個(gè)Comparable接口,叫MyComparable。

現(xiàn)在,首先,我們來(lái)定義這個(gè)java接口,代碼如下:

public interface MyComparable {

int compareTo(Object other);

}


解釋一下:

Java使用interface這個(gè)關(guān)鍵字來(lái)聲明接口,修飾符一般都是public。

interface后面就是接口的名字MyComparable。

接口定義里面,聲明了一個(gè)方法compareTo,但沒(méi)有定義方法體,接口都不實(shí)現(xiàn)方法。接口方法不需要加修飾符,加與不加都是public的,不能是別的修飾符。

再來(lái)解釋一下compareTo方法:

方法的參數(shù)是一個(gè)Object類(lèi)型的變量other,表示另一個(gè)參與比較的對(duì)象。


第一個(gè)參與比較的對(duì)象是自己

返回結(jié)果是int類(lèi)型,-1表示自己小于參數(shù)對(duì)象,0表示相同,1表示大于參數(shù)對(duì)象

接口與類(lèi)不同,它的方法沒(méi)有實(shí)現(xiàn)代碼。定義一個(gè)接口本身并沒(méi)有做什么,也沒(méi)有太大的用處,它還需要至少兩個(gè)參與者,一個(gè)需要實(shí)現(xiàn)接口,另一個(gè)使用接口,我們先來(lái)說(shuō)說(shuō)如何實(shí)現(xiàn)接口:

類(lèi)可以實(shí)現(xiàn)接口,表示類(lèi)的對(duì)象具有接口所表示的能力。我們來(lái)看一個(gè)例子,以前面介紹過(guò)的Point類(lèi)來(lái)說(shuō)明,我們讓Point具備可以比較的能力,Point之間怎么比較呢?我們假設(shè)按照與原點(diǎn)的距離進(jìn)行比較,下面是Point類(lèi)的代碼:

public class Point implements MyComparable {

private int x;

private int y;

public Point(int x, int y) {

this.x = x;

this.y = y;

}

public double distance(){

return Math.sqrt(x*x+y*y);

}

@Override

public int compareTo(Object other) {

if(!(other instanceof Point)){

throw new IllegalArgumentException();

}

Point otherPoint = (Point)other;

double delta = distance() - otherPoint.distance();

if(delta<0){

return -1;

}else if(delta>0){

return 1;

}else{

return 0;

}

}

@Override

public String toString() {

return "("+x+","+y+")";

}

}


我們解釋一下:

Java使用implements這個(gè)關(guān)鍵字表示實(shí)現(xiàn)接口,前面是類(lèi)名,后面是接口名。

實(shí)現(xiàn)接口必須要實(shí)現(xiàn)接口中聲明的方法,Point實(shí)現(xiàn)了compareTo方法。

我們?cè)賮?lái)解釋一下Point的compareTo實(shí)現(xiàn):

Point不能與其他類(lèi)型的對(duì)象進(jìn)行比較,它首先檢查要比較的對(duì)象是否是Point類(lèi)型,如果不是,使用throw拋出一個(gè)異常,異常我們還沒(méi)提到,后續(xù)文章講解,此處可以忽略。

如果是Point類(lèi)型,使用強(qiáng)制類(lèi)型轉(zhuǎn)換將Object類(lèi)型的參數(shù)other轉(zhuǎn)換為Point類(lèi)型的參數(shù)otherPoint。

這種顯式的類(lèi)型檢查和強(qiáng)制轉(zhuǎn)換是可以使用泛型機(jī)制避免的,后續(xù)文章我們?cè)俳榻B泛型。

一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口,表明類(lèi)的對(duì)象具備多種能力,各個(gè)接口之間以逗號(hào)分隔,語(yǔ)法如下所示:

public class Test implements Interface1, Interface2 {

....

}


本文我們通過(guò)實(shí)例粗淺的了解了Java接口實(shí)現(xiàn)的相關(guān)知識(shí),實(shí)際上Java接口實(shí)現(xiàn)是一節(jié)需要耗時(shí)很長(zhǎng)的課程,我們只是剛剛開(kāi)始,接下來(lái)的課程可以到本站的Java零基礎(chǔ)入門(mén)教程中自主學(xué)習(xí),好風(fēng)憑借力,揚(yáng)帆正當(dāng)時(shí),相信你一定能攻克難關(guān),學(xué)有所成!


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 精品免费视在线视频观看 | 国产欧美成人免费观看视频 | 亚洲激情在线观看 | 亚洲国产成人九九综合 | 国产成人综合亚洲亚洲欧美 | 欧美啪啪小视频 | 中国性xxxxx极品奶水 | 久久夜色精品 | 国产偷久久 | 欧美日韩网址 | 日韩伦理视频 | aa大片成人免费网站 | 日本一线一区二区三区免费视频 | 99在线视频免费观看 | 久久久久免费精品视频 | 亚洲国产成人综合精品2020 | 欧美精品亚洲人成在线观看 | 日韩美女强理论片 | 久草在在线视频 | 色94色欧美一区 | 在线观看欧美亚洲日本专区 | 日韩在线一区视频 | 免费看真人a一级毛片 | 色综合久久婷婷天天 | 拍拍拍无挡视频免费观看1000 | 狠狠色噜噜狠狠狠8888米奇 | 日日碰碰 | 九九在线观看高清免费 | 久久九九视频 | 豆国产93在线 | 亚洲 | 天天射日日干 | 亚洲日本人成网站在线观看 | 国产永久在线观看 | 久久国产一区二区 | 国产精品视频成人 | 激情国产白嫩美女在线观看 | 亚洲线精品久久一区二区三区 | 99视频在线观看高清 | 成人精品区 | 久久国产高清视频 | 精品久久久中文字幕二区 |