Java程序設(shè)計(jì)課件:?jiǎn)卧?8 接口_第1頁(yè)
Java程序設(shè)計(jì)課件:?jiǎn)卧?8 接口_第2頁(yè)
Java程序設(shè)計(jì)課件:?jiǎn)卧?8 接口_第3頁(yè)
Java程序設(shè)計(jì)課件:?jiǎn)卧?8 接口_第4頁(yè)
Java程序設(shè)計(jì)課件:?jiǎn)卧?8 接口_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、單08 接口模擬USB接口程序設(shè)計(jì)單元目標(biāo)u 掌握J(rèn)ava接口的概念;u 理解面向接口編程的思想;u 掌握接口的多態(tài)技術(shù)。學(xué)習(xí)任務(wù)任務(wù)描述電腦主板上的USB接口有嚴(yán)格的規(guī)范,U盤(pán)、移動(dòng)硬盤(pán)的內(nèi)部結(jié)構(gòu)不相同,每種盤(pán)的容量也不同,但U盤(pán)、移動(dòng)硬盤(pán)都遵守了USB接口的規(guī)范,所以,在使用USB接口時(shí),可以將U盤(pán)、移動(dòng)硬盤(pán)插入任意一個(gè)USB接口,而不用擔(dān)心哪個(gè)USB接口是專門(mén)插哪個(gè)盤(pán)。請(qǐng)編寫(xiě)程序,模擬使用USB接口的過(guò)程。運(yùn)行結(jié)果模擬USB接口程序設(shè)計(jì)知識(shí)準(zhǔn)備8.1 Java接口去購(gòu)買(mǎi)USB 電腦鼠標(biāo)的時(shí)候,不需要問(wèn)電腦配件的商家USB 鼠標(biāo)是什么型號(hào)的,也不需要詢問(wèn)是滿足什么要求,一般情況下買(mǎi)回來(lái)都可

2、以直接使用。其原因就是USB 接口是統(tǒng)一的,都實(shí)現(xiàn)了鼠標(biāo)的基本功能,可以說(shuō)是鼠標(biāo)的一種規(guī)范。所有的廠家都會(huì)按照這個(gè)規(guī)范,來(lái)制造USB 接口的鼠標(biāo)。這個(gè)規(guī)范說(shuō)明制作該USB類型的鼠標(biāo)應(yīng)該做些什么,但并不說(shuō)明如何做。2.16.1接口的概念Java 程序設(shè)計(jì)中的接口(Interface)也是一種規(guī)范,是用來(lái)組織應(yīng)用程序中的類,并調(diào)節(jié)它們的相互關(guān)系。接口是由常量和抽象方法組成的特殊類,是對(duì)抽象類的進(jìn)一步抽象,形成了一個(gè)屬性和行為的介紹集合,該集合通常代表了一組功能的實(shí)現(xiàn)。【提 示】在最早期的面向?qū)ο笳Z(yǔ)言中不是使用interface關(guān)鍵字,而是使用protocal。從這個(gè)詞匯中可以看出接口最核心的意義是

3、一個(gè)協(xié)議,一個(gè)規(guī)定了一組功能的協(xié)議。既然有協(xié)議的意思,那么協(xié)議中將要說(shuō)明需要遵守的條約,相當(dāng)于抽象方法。然而協(xié)議中一般不去理會(huì)到底如何實(shí)現(xiàn)條約方式,這進(jìn)一步說(shuō)明了使用抽象方法的意義。Java 不支持多繼承性,即一個(gè)類只能有一個(gè)父類。單繼承性使得Java簡(jiǎn)單,易于管理程序。為了克服單繼承的缺點(diǎn),Java使用了接口,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。2.16.2接口的聲明 public interface 接口名 extends 接口1,接口2 public static final 數(shù)據(jù)類型 常量名=常量值; public static abstract 返回值 抽象方法名(參數(shù)列表);由接口的聲明的語(yǔ)法

4、格式看出,接口是由常量和抽象方法組成的特殊類。注解:1. 接口的訪問(wèn)修飾符只有public一個(gè)。2. 接口可以被繼承,它將繼承父接口中的所有方法和常量。3. 接口體只包含兩部分,一是常量;而是抽象方法。4. 接口中的常量必須賦值,并且接口中的屬性都被默認(rèn)為是final來(lái)修飾的常量。5. 接口中的所有的方法都必須是抽象方法,抽象方法不需要使用abstract關(guān)鍵字聲明,直接默認(rèn)為是抽象的。2.16.3接口的實(shí)現(xiàn)和使用既然接口里只有抽象方法,它只要聲明而不用定義處理方式,于是自然可以聯(lián)想到接口也沒(méi)有辦法像一般類一樣,再用它來(lái)創(chuàng)建對(duì)象。利用接口打造新的類的過(guò)程,稱之為接口的實(shí)現(xiàn)(implementa

5、tion),同時(shí)實(shí)現(xiàn)了接口的類稱之為接口實(shí)現(xiàn)類。接口實(shí)現(xiàn)格式如下:class 類名稱 implements 接口A,接口B / 接口的實(shí)現(xiàn) 【實(shí)例2-18】接口實(shí)現(xiàn)程序設(shè)計(jì)interface A / 定義接口A public String name = "張三" ;/ 定義全局常量 public void print() ;/ 定義抽象方法模擬USB接口程序設(shè)計(jì)interface B/ 定義接口B public void say() ;/ 定義抽象方法class C implements A,B/ 子類同時(shí)實(shí)現(xiàn)兩個(gè)接口 public void say() / 覆寫(xiě)B(tài)接口中的

6、抽象方法System.out.println("Hello!"); public void print() / 覆寫(xiě)A接口中的抽象方法System.out.println("姓名:" + name); 接口的使用與類的使用有些不同。類會(huì)直接使用new關(guān)鍵字來(lái)構(gòu)建一個(gè)類的實(shí)例進(jìn)行應(yīng)用,而接口只能被它的實(shí)現(xiàn)類進(jìn)行進(jìn)一步的實(shí)現(xiàn)才能發(fā)揮作用。8.2接口與多態(tài)多態(tài)是面向?qū)ο缶幊趟枷氲闹匾w現(xiàn),它是建立在繼承關(guān)系存在基礎(chǔ)上的。接口與它的實(shí)現(xiàn)類之間存在實(shí)現(xiàn)關(guān)系,同時(shí)也就具有繼承關(guān)系。因此接口可以像父類子類一樣使用多態(tài)技術(shù),其中接口回調(diào)就是多態(tài)技術(shù)的體現(xiàn)。接口回調(diào)是指:

7、可以將接口實(shí)現(xiàn)類的對(duì)象賦給該接口聲明的接口變量中,那么該接口變量就可以調(diào)用接口實(shí)現(xiàn)類對(duì)象中的方法。不同的類在使用同一接口時(shí),可能具有不同的功能體現(xiàn),即接口實(shí)現(xiàn)類的方法體不必相同,因此,接口回調(diào)可能產(chǎn)生不同的行為?!緦?shí)例2-19】接口回調(diào)的例子模擬USB接口程序設(shè)計(jì)interface ShowMessage void showTradeMark();class TV implements ShowMessage public void showTradeMark() System.out.println("我是電視機(jī)");class PC implements ShowMes

8、sage public void showTradeMark() System.out.println("我是電腦");public class TestExample public static void main(String args)ShowMessage sm; / 聲明接口變量。sm = new TV(); / 實(shí)現(xiàn)類對(duì)象賦值接口變量sm.showTradeMark(); / 接口回調(diào)。sm = new PC(); / 接口變量中存放對(duì)象的引用。sm.showTradeMark(); / 接口回調(diào)。8.3面向接口編程的步驟接口體現(xiàn)了規(guī)范與分離的設(shè)計(jì)原則,可以很好

9、地降低程序各模塊之間的耦合度,提高系統(tǒng)的可擴(kuò)展性,可維護(hù)性。開(kāi)發(fā)系統(tǒng)時(shí),主體構(gòu)架使用接口來(lái)構(gòu)成系統(tǒng)的骨架,這樣就可以通過(guò)更換接口的實(shí)現(xiàn)類來(lái)更換系統(tǒng)的實(shí)現(xiàn)。這就是面向接口編程的思想?!緦?shí)例2-20】有一打印中心,既有黑白打印機(jī),也有彩色打印機(jī),在打印時(shí),使用不同的打印機(jī),打印也就不同。采用面向接口編程的思想編程。1. 抽象出Java接口分析:黑白、彩色打印機(jī)都存在一個(gè)共同的方法特征:print;黑白、彩色打印機(jī)對(duì)print方法有各自不同的實(shí)現(xiàn)。模擬USB接口程序設(shè)計(jì)結(jié)論:抽象出Java接口PrinterFace,在其中定義方法print。具體實(shí)現(xiàn):public interface Printer

10、Face /打印機(jī)接口public void print(String content);public interface Printer /打印社的打印接口public String detail();2. 實(shí)現(xiàn)Java接口分析:已經(jīng)抽象出Java接口PrinterFace,并在其中定義了print方法黑白、彩色打印機(jī)對(duì)print方法有各自不同的實(shí)現(xiàn)。結(jié)論:黑白、彩色打印機(jī)都實(shí)現(xiàn)PrinterFace接口,各自實(shí)現(xiàn)print方法。具體實(shí)現(xiàn):public class BlackPrinter implements PrinterFace public void print(String con

11、tent) 模擬USB接口程序設(shè)計(jì) System.out.println("黑白打印:"); System.out.println(content); public class ColorPrinter implements PrinterFace public void print(String content) System.out.println("彩色打?。?quot;); System.out.println(content);3. 使用Java接口分析:主體構(gòu)架使用接口, 讓接口構(gòu)成系統(tǒng)的骨架。結(jié)論:更換實(shí)現(xiàn)接口的類就可以更換系統(tǒng)的實(shí)現(xiàn)。具體實(shí)現(xiàn):pu

12、blic class PrinterCentre implements Printer private PrinterFace printerface; /打印機(jī)接口模擬USB接口程序設(shè)計(jì) public void setPrinter(PrinterFace pf) this. printerface = pf; public String detail() return "這里是打印中心" public void printph(Printer pf) printerface.print(pf.detail(); / printerface接口打印Printer接口信息

13、public class Main public static void main(String args) PrinterCentre pc=new PrinterCentre();/創(chuàng)建打印中心pc.setPrinter(new BlackPrinter();/配備黑色打印機(jī)pc.printph(pc);/打印pc.setPrinter(new ColorPrinter();/配備彩色打印機(jī)pc.printph(pc);/打印程序運(yùn)行結(jié)果如下:黑白打?。哼@里是打印中心彩色打印:這里是打印中心8.4接口中常量的使用常量是一種標(biāo)識(shí)符,它的值在運(yùn)行期間恒定不變。常量標(biāo)識(shí)符在程序中只能被引用,而不

14、能被重新賦值。在Java 接口中聲明的變量在編譯時(shí)會(huì)自動(dòng)加上static final的修飾符,即聲明為常量,因而Java接口通常是存放常量的最佳地點(diǎn)。下面通過(guò)代碼來(lái)演示接口里的常量?!緦?shí)例2-21】接口中的常量程序設(shè)計(jì)模擬USB接口程序設(shè)計(jì)interface Cons / 定義接口 final String name = "this is my name"class Const implements Cons public class TestInterfaceConst public static void main(String s) Const cons = new

15、Const();String name = C;System.out.println(name);String n = ;System.out.println(n);程序運(yùn)行結(jié)果如下:this is my namethis is my name從上面實(shí)例中可以看出,接口內(nèi)定義的所有屬性都是public static的。方法都是public abstract的。任務(wù)實(shí)施1實(shí)施思路USB接口可以使用U盤(pán)、移動(dòng)硬盤(pán),完成插入、啟動(dòng)、停止的功能。當(dāng)U盤(pán)或移動(dòng)硬盤(pán)插入U(xiǎn)SB接口時(shí),它們的表現(xiàn)是不一樣的。作為USB接口的接口,有兩個(gè)抽象方法,但無(wú)法實(shí)現(xiàn)具體的功能。這些功能

16、留在U盤(pán)或移動(dòng)硬盤(pán)實(shí)現(xiàn)類中去完成。u 打開(kāi)Eclipse,定義一個(gè)USB接口得到接口的框架;u 在接口中進(jìn)行抽象方法聲明u 編寫(xiě)測(cè)試類進(jìn)行測(cè)試。2程序代碼public interface USBInterface /這是Java接口,相當(dāng)于主板上的USB接口的規(guī)范模擬USB接口程序設(shè)計(jì)public void start(); public void Conn();public void stop();public class MouseInterface implements USBInterfacepublic void start()/實(shí)現(xiàn)接口的抽象方法 System.out.printl

17、n("鼠標(biāo)插入,開(kāi)始使用");public void Conn()System.out.println("鼠標(biāo)已插入,使用中");public void stop()/實(shí)現(xiàn)接口的抽象方法,移動(dòng)硬盤(pán)有自己的功能System.out.println("鼠標(biāo)退出工作");public class MovingDisk implements USBInterfacepublic void start()/實(shí)現(xiàn)接口的抽象方法,移動(dòng)硬盤(pán)有自己的功能System.out.println("移動(dòng)存儲(chǔ)設(shè)備插入,開(kāi)始使用");publ

18、ic void Conn()System.out.println("移動(dòng)存儲(chǔ)設(shè)備已插入,使用中");public void stop()/實(shí)現(xiàn)接口的抽象方法,移動(dòng)硬盤(pán)有自己的功能System.out.println("移動(dòng)存儲(chǔ)設(shè)備退出工作");public class Keyboard implements USBInterfacepublic void start()/實(shí)現(xiàn)接口的抽象方法,移動(dòng)硬盤(pán)有自己的功能System.out.println("鍵盤(pán)插入,開(kāi)始使用");public void Conn()System.out.pr

19、intln("鍵盤(pán)已插入,使用中");public void stop()/實(shí)現(xiàn)接口的抽象方法,移動(dòng)硬盤(pán)有自己的功能System.out.println("鍵盤(pán)退出工作");public class TestUsbInterface public static void main(String args) USBInterface usb1 = new MovingDisk();/將移動(dòng)硬盤(pán)插入U(xiǎn)SB接口1USBInterface usb2 = new MouseInterface();/將鼠標(biāo)插入U(xiǎn)SB接口2USBInterface usb3 = new Keyboard();/將鍵

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論