《接口與實(shí)現(xiàn)》PPT課件.ppt
《《接口與實(shí)現(xiàn)》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《接口與實(shí)現(xiàn)》PPT課件.ppt(22頁珍藏版)》請在裝配圖網(wǎng)上搜索。
2019/12/5,信息學(xué)院,1,第7章 接口與實(shí)現(xiàn),Java 不支持多繼承性,即一個類只能有一個父類。單繼承性使得Java 簡單,易于管理程序。為了克服單繼承的缺點(diǎn),Java使用了接口,一個類可以實(shí)現(xiàn)多個接口。 使用關(guān)鍵字interface 來定義一個接口。接口的定義和類的定義很相似,分為接口的聲明和接口體。,2019/12/5,信息學(xué)院,2,7.1.1 接口的聲明與使用 (1)接口聲明 接口通過使用關(guān)鍵字interface 來聲明 interface 接口的名字 (2)接口體 接口體中包含常量定義和方法定義兩部分。接口體中只進(jìn)行方法的聲明,不許提供方法的實(shí)現(xiàn),所以方法的定義沒有方法體,且用分號結(jié)尾。,7.1 接口,2019/12/5,信息學(xué)院,3,例:interface Runner{ public static final int id=1; public void start( ); public void run( ); public void stop( ); },7.1 接口,2019/12/5,信息學(xué)院,4,(3)接口的使用 一個類通過使用關(guān)鍵字implements 聲明自己使用一個或多個接口。如果使用多個接口,用逗號隔開接口名。 如:class A implements Printable,Addable class Dog extends Animal implements Eatable,Sleepable,7.2 實(shí)現(xiàn)接口,2019/12/5,信息學(xué)院,5,7.2 實(shí)現(xiàn)接口,如果一個類使用了某個接口,那么這個類必須實(shí)現(xiàn)該接口的所有方法,即為這些方法提供方法體。,需要注意的是在類中實(shí)現(xiàn)接口的方法時,方法的名字、返回類型、參數(shù)個數(shù)及類型必須與接口中的完全一致。,特別要注意的是接口中的方法被默認(rèn)是public 的,所以類在實(shí)現(xiàn)接口方法時一定要用public 來修飾。,2019/12/5,信息學(xué)院,6,如果接口的方法的返回類型不是void 的,那么在類中實(shí)現(xiàn)該接口方法時,方法體至少要有一個return 語句。如果是void 型,類體除了兩個大括號外,也可以沒有任何語句。,7.2 實(shí)現(xiàn)接口,Java 為我們提供的接口都在相應(yīng)的包中,通過引入包可以使用Java 提供的接口。也可以自己定義接口,一個java源文件就是由類和接口組成的。,2019/12/5,信息學(xué)院,7,例:import java.applet.*;import java.awt.*; interface Computable{ final int MAX=100; void speak(String s); int f(int x); float g(float x,float y); } class China implements Computable{ int xuehao; public int f(int x) { //不要忘記public關(guān)鍵字. int sum=0; for(int i=1;i=x;i++) { sum=sum+i; } return sum; },2019/12/5,信息學(xué)院,8,public float g(float x,float y){ return 6; //至少有return語句. } public void speak(String s) { } } class Japan implements Computable{ int xuehao; public int f(int x){ return 68; } public float g(float x,float y){ return x+y; },2019/12/5,信息學(xué)院,9,public void speak(String s) { } public class Example4_26 extends Applet{ China Li; Japan Henlu; public void init(){ Li=new China(); Henlu=new Japan(); Li.xuehao=991898; Henlu.xuehao=941448; },2019/12/5,信息學(xué)院,10,public void paint(Graphics g){ g.drawString(“xuehao:“+Li.MAX+Li.xuehao+“從1到100 求和“+Li.f(100),10,20); g.drawString(“xuehao:“+Henlu.MAX+Henlu.xuehao+“加法“+Henlu.g(2.0f,3.0f),10,40); } } 注:如果一個類聲明實(shí)現(xiàn)一個接口,但沒有實(shí)現(xiàn)接口中的所有方法,那么這個類必須是 abstract 類。,2019/12/5,信息學(xué)院,11,接口的語法規(guī)則很容易記住,但真正理解接口更重要。你可能注意到,在上述例子26 中如果去掉接口,并把程序中的Li.MAX,Henlu.MAX 去掉,上述程序的運(yùn)行沒有任何問題。那為什么要用接口呢?,7.3 理解接口,2019/12/5,信息學(xué)院,12,假如轎車、卡車、拖拉機(jī)、摩托車、客車都是機(jī)動車的子類,其中機(jī)動車是一個抽象類。如果機(jī)動車中有一個抽象方法 “收取費(fèi)用”,那么所有的子類都要實(shí)現(xiàn)這個方法,即給出方法體,產(chǎn)生各自的收費(fèi)行為。這顯然不符合人們的思維方法,因?yàn)橥侠瓩C(jī)可能不需要有”收取費(fèi)用”的功能,而其他的一些類,比如飛機(jī)、輪船等可能也需要具體實(shí)現(xiàn)”收取費(fèi)用”。,7.3 理解接口,2019/12/5,信息學(xué)院,13,接口可以增加很多類都需要實(shí)現(xiàn)的功能,不同的類可以使用相同的接口,同一個類也可以實(shí)現(xiàn)多個接口。,7. 3 理解接口,接口只關(guān)心功能,并不關(guān)心功能的具體實(shí)現(xiàn)。,比如“客車類”實(shí)現(xiàn)一個接口,該接口中有一個“收取費(fèi)用”的方法,那么這個“客車類”必須具體給出怎樣收取費(fèi)用的操作,即給出方法的方法體,不同車類都可以實(shí)現(xiàn)“收取費(fèi)用”,但“收取費(fèi)用”的手段可能不相同。,2019/12/5,信息學(xué)院,14,7.3 理解接口,接口的思想在于它可以增加很多類都需要實(shí)現(xiàn)的功能,使用相同的接口類不一定有繼承關(guān)系。,注:接口聲明時,如果關(guān)鍵字interface 前面加上public 關(guān)鍵字,就稱這樣的接口是一個public 接口,public 接口可以被任何一個類使用。 如果一個接口不加public 修飾,就稱做友好接口類,友好接口可以被同一包中的類使用。,7.4 接口的UML圖,表示接口的UML圖和表示類的UML圖類似,使用一個長方形描述一個接口的主要構(gòu)成,將長方形垂直地分為三層。 第1層是名字層、第2層是常量層、第3層是方法層 。,2019/12/5,信息學(xué)院,16,接口回調(diào)是指可以把實(shí)現(xiàn)某一接口的類創(chuàng)建的對象的引用賦給該接口聲明的接口變量中。 那么該接口變量就可以調(diào)用被類實(shí)現(xiàn)的接口中的方法。實(shí)際上,當(dāng)接口變量調(diào)用被類實(shí)現(xiàn)的接口中的方法時,就是通知相應(yīng)的對象調(diào)用接口的方法。,7.5 接口回調(diào),2019/12/5,信息學(xué)院,17,例:interface ShowMessage{ void 顯示商標(biāo)(String s); } class TV implements ShowMessage{ public void 顯示商標(biāo)(String s){ System.out.println(s); } } class PC implements ShowMessage{ public void 顯示商標(biāo)(String s){ System.out.println(s); } },7.5 接口回調(diào),2019/12/5,信息學(xué)院,18,public class Example4_28{ public static void main(String args[]) { ShowMessage sm; sm=new TV(); sm.顯示商標(biāo)(“長城牌電視機(jī)“); sm=new PC(); sm.顯示商標(biāo)(“聯(lián)想奔月5008PC機(jī)“); } },7.5 接口回調(diào),2019/12/5,信息學(xué)院,19,7.7 接口變量做參數(shù),如果一個方法的參數(shù)是接口類型,就可以將任何實(shí)現(xiàn)該接口類的實(shí)例的引用傳遞給該接口參數(shù),那么接口參數(shù)就可以回調(diào)類實(shí)現(xiàn)的接口方法。,7.6 接口與多態(tài),可以通過在接口中聲明若干個abstract方法,表明這些方法的重要性,方法體的內(nèi)容細(xì)節(jié)由實(shí)現(xiàn)接口的類去完成。使用接口進(jìn)行程序設(shè)計的核心思想是使用接口回調(diào),即接口變量存放實(shí)現(xiàn)該接口的類的對象的引用,從而接口變量就可以回調(diào)類實(shí)現(xiàn)的接口方法。 例3,7.8 abstract類與接口的比較,接口和abstract類的比較如下: 1.a(chǎn)bstract類和接口都可以有abstract方法。 2.接口中只可以有常量,不能有變量;而abstract類中即可以有常量也可以有變量。 3.a(chǎn)bstract類中也可以有非abstract方法,接口不可以。,7.9 面向接口編程,面向接口去設(shè)計程序,可以通過在接口中聲明若干個abstract方法,表明這些方法的重要性,方法體的內(nèi)容細(xì)節(jié)由實(shí)現(xiàn)接口的類去完成。 使用接口進(jìn)行程序設(shè)計的核心思想是使用接口回調(diào),即接口變量存放實(shí)現(xiàn)該接口的類的對象的引用,從而接口變量就可以回調(diào)類實(shí)現(xiàn)的接口方法。 例5,- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 接口與實(shí)現(xiàn) 接口 實(shí)現(xiàn) PPT 課件
鏈接地址:http://m.zhongcaozhi.com.cn/p-3033791.html