




已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第6章 接口與多態(tài),主要內(nèi)容 接口 接口回調(diào) 面向接口編程 難點 面向接口編程,導(dǎo)學(xué),Java不支持多繼承性,即一個類只能有一個父類。單繼承性使得Java簡單,易于管理和維護(hù)。Java的接口更加符合人的思維方式,6.1 接 口,使用關(guān)鍵字interface來定義一個接口。接口的定義和類的定義很相似,分為接口的聲明和接口體。,6.1.1 接口的聲明與使用,接口通過使用關(guān)鍵字interface來聲明,格式: interface 接口的名字,1接口聲明,接口是一組常量和抽象方法的集合。 (1)接口的訪問權(quán)限是public或缺省權(quán)限。 (2)接口中成員變量聲明格式如下: public static final 成員變量名=常量 接口中成員方法聲明格式如下: public abstract 返回值類型 成員方法名(參 數(shù)表) 注意:接口中成員變量和成員方法的格式是固定的,故可以省略。,2接口體,舉例,interface Printable public static final int MAX=100; public abstract void add( ); public abstract float( float x, float y); ,接口的示例,public interface Shape1 public static final PI=3.14; public abstract double area(); public abstract double volume(double x); public abstract void show(); ,接口的特點,(1)接口可以定義多重繼承 (2)接口不存在最高層,而Java中類的最高層是Object類。 (3)接口中的方法只能被聲明為public abstract 接口中成員變量只能用public static final 來聲明。 (4)接口中的方法不能定義方法體。,在Java語言中,接口由類去實現(xiàn)以便使用接口中的方法。一個類可以實現(xiàn)多個接口,類通過使用關(guān)鍵字implements聲明自己實現(xiàn)一個或多個接口。如果實現(xiàn)多個接口,則用逗號隔開接口名 如: class A implements Printable,Addable,3接口的使用,重要性質(zhì),如果一個類實現(xiàn)了接口,那么這個類必須重寫該接口的所有方法 重寫接口的方法時,接口中的方法一定是public abstract 方法,所以類在重寫接口方法時不僅要去掉abstract 修飾,給出方法體,而且方法的訪問權(quán)限一定要用public 來修飾。,例6-1,public interface Computable int MAX=100; int f(int x); public class China implements Computable /China類實現(xiàn)Computable接口 int number; public int f(int x) /不要忘記public關(guān)鍵字 int sum=0; for(int i=1;i=x;i+) sum=sum+i; return sum; ,public class Japan implements Computable /Japan類實現(xiàn)Computable接口 int number; public int f(int x) return 46+x; ,public class Example6_1 public static void main(String args) China zhang; Japan henlu; zhang=new China(); henlu=new Japan(); zhang.number=28+Computable.MAX; henlu.number=14+Computable.MAX; System.out.println(“zhang的學(xué)號“+zhang.number+“,zhang求和結(jié)果“+zhang.f(100); System.out.println(“henlu的學(xué)號“+henlu.number+“,henlu求和結(jié)果“+henlu.f(100); ,說明,(1)如果父類實現(xiàn)了某接口,那么子類也就實現(xiàn)了該接口,子類不必顯式地使用關(guān)鍵字implements聲明實現(xiàn)了接口 (2)接口聲明時,關(guān)鍵字interface前可加public (3)如果一個類聲明實現(xiàn)了一個接口,但沒有重寫接口中的所有方法,那么這個類必須是abstract類,interface Computable final int MAX=100; void speak(String s); int f(int x); float g(float x,float y); abstract class A implements Comutable public int f(int x) int sum=0; for(int i=1;i=x;i+) sum+=i; return sum; ,6.1.2 理解接口,接口可以增加很多類都需要的功能,不同類可以實現(xiàn)相同的接口,同一個類也可以實現(xiàn)多個接口。,接口提供了方法聲明與實現(xiàn)相分離的機(jī)制,使實現(xiàn)接口的多個類表現(xiàn)出相同的行為模式。,當(dāng)一個類不希望通過繼承使得自己具有某個方法時,就可以考慮去實現(xiàn)接口而不是把自己聲明為某個類的子類。,例6-2,見教材,6.1.3 接口的UML圖,頂部是名字層,接口名必須是斜體,而且需要用 第二層是常量層 第三層是方法層,6.2 接口回調(diào)(重點),6.2.1 接口變量與回調(diào)機(jī)制 6.2.2 接口的多態(tài)性 6.2.3 abstract 類與接口的區(qū)別,6.2.1 接口變量與回調(diào)機(jī)制,接口是一種數(shù)據(jù)類型,用接口聲明的變量稱為接口變量 接口變量中可以存放實現(xiàn)接口的類的實例的引用。 接口回調(diào)? 可以把實現(xiàn)某一接口的類創(chuàng)建的對象的引用賦給該接口聲明的變量中,那么該接口變量就可以調(diào)用被類實現(xiàn)的接口方法 接口回調(diào)類似于上轉(zhuǎn)型對象調(diào)用子類的重寫方法 注意:接口變量無法調(diào)用類中的其他非接口方法,例6-3,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); public class Example6_3 public static void main(String args) ShowMessage sm; /聲明接口變量 sm=new TV(); /接口變量中存放對象的引用 sm.顯示商標(biāo)(“長城牌電視機(jī)“); /接口回調(diào)。 sm=new PC(); /接口變量中存放對象的引用 sm.顯示商標(biāo)(“聯(lián)想奔月5008PC機(jī)“); /接口回調(diào) ,6.2.2 接口的多態(tài)性,繼承只能讓父類引用指向與其屬于同一類的對象,例如肉類引用只能指向?qū)儆谌獾膶ο蟆?接口引用則能指向任意類型的對象,即使對象間沒有任何關(guān)系,只要這些對象所在的類實現(xiàn)了該接口,interface Food public void doEat();/吃食物的方法 abstract class Fruit abstract class Meat class Apple extends Fruit implements Food /實現(xiàn)接口中的方法 public void doEat() System.out.println(“我是蘋果,我屬于水果,我可以充當(dāng)食物被吃掉!“); class Beef extends Meat implements Food /實現(xiàn)接口中的方法 public void doEat() System.out.println(“我是牛肉,我屬于肉類,我可以充當(dāng)食物被吃掉!“); ,示例(續(xù)),public class Test public static void main(String args ) Food f=new Apple();/創(chuàng)建蘋果對象 f.doEat();/調(diào)用蘋果的吃法 f=new Beef();/創(chuàng)建牛肉的對象 f.doEat();/調(diào)用牛肉的吃法 ,例6-4,見教材,6.2.3 abstract 類與接口的區(qū)別(牢記),相同點 (1)都包含抽象方法 (2)都不能被實例化 (3)都是引用數(shù)據(jù)類型,區(qū)別,(1)一個類只能繼承一個抽象類,而一個類可以實現(xiàn)多個接口 (2)接口中的成員的訪問權(quán)限都是public,而抽象類中成員的訪問權(quán)限和普通類一樣 (3)抽象類中可以聲明成員變量,成員變量的值可以被更改;接口中只能聲明常量 (4)抽象類中可以聲明抽象方法、普通成員方法以及構(gòu)造方法;接口中只能聲明抽象方法。,6.3 面向接口編程,抽象類最本質(zhì)的特性就是可以包含有抽象方法 接口中只有抽象方法,接口中將其抽象方法的實現(xiàn)交給實現(xiàn)該接口的類 使用接口進(jìn)行程序設(shè)計的核心思想是使用接口回調(diào) 開閉原則:對擴(kuò)展開放,對修改關(guān)閉。,例6-5,設(shè)計一個廣告牌,希望所設(shè)計的廣告牌可以展示許多公司的廣告詞 (1)分析 廣告牌可以展示很多公司,要做抽取。抽取出這么多公司的廣告的共性 (2)設(shè)計接口 設(shè)計一個接口Advertisement,該接口有兩個方法 showAdvertisement( )和getCorpName( ).各個公司要實現(xiàn)該接口,例6-5,(3)設(shè)計廣告牌類 該類有一個show(Advertisement adver)方法??梢越邮杖魏螌崿F(xiàn)了Advertisement接口的類的對象。,Advertisement.java public interface Advertisement /接口 public void showAdvertisement(); public String getCorpName(); ,AdvertisementBoard.java public class AdvertisementBoard /負(fù)責(zé)創(chuàng)建廣告牌 public void show(Advertisement adver) System.out.println(adver.getCorpName()+“的廣告詞如下:“); adver.showAdvertisement(); /接口回調(diào) ,WhiteCloudCorp.java public class WhiteCloudCorp implements Advertisement /PhilipsCorp實現(xiàn)Avertisement接口 public void showAdvertisement() System.out.println(“); System.out.printf(“飛機(jī)中的戰(zhàn)斗機(jī),哎yes!n“); System.out.println(“); public String getCorpName() return “白云有限公司“ ; ,BlackLandCorp.java public class BlackLandCorp implements Advertisement public void showAdvertisement() System.out.println(“*“); System.out.printf(“勞動是爹n土地是媽n想種啥來n就往外接n“); System.out.println(“*“); public String getCorpName() retur
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 語文國培二次培訓(xùn)
- 中班幼兒法制啟蒙教育
- 團(tuán)隊培訓(xùn)展示簡單
- 中班健康課件:鼻子出血怎么辦
- 中藥飲片企業(yè)設(shè)備部培訓(xùn)
- 小兒急性咽喉炎護(hù)理查房
- 神經(jīng)外科入院患者健康宣教
- 中醫(yī)藥現(xiàn)代化進(jìn)程中跨境電商市場拓展研究報告
- 污水廠員工培訓(xùn)
- 制造業(yè)數(shù)字化轉(zhuǎn)型數(shù)據(jù)治理策略在智能制造成本控制中的應(yīng)用報告
- 【課件】新高三啟動主題班會:啟航高三逐夢未來
- 長鑫存儲在線試題及答案
- 小學(xué)勞動教育校本課程開發(fā)實踐與研究
- 森林草原防火 無人機(jī)巡查技術(shù)規(guī)范 編制說明
- 2025-2030中國發(fā)泡聚苯乙烯泡沫行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 不寐的中醫(yī)護(hù)理常規(guī)
- 《能源的科普講解》課件
- 天一大聯(lián)考·天一小高考2024-2025學(xué)年(下)高三第四次考試政治試題及答案
- 2025年安慶桐城經(jīng)開區(qū)建設(shè)投資集團(tuán)有限公司招聘12人筆試參考題庫附帶答案詳解
- 2025-2030中國藥食同源行業(yè)市場運行分析及市場前景預(yù)測研究報告
- 2024年杭州地鐵科技有限公司招聘筆試真題
評論
0/150
提交評論