第八章.抽象類、接口_第1頁(yè)
第八章.抽象類、接口_第2頁(yè)
第八章.抽象類、接口_第3頁(yè)
第八章.抽象類、接口_第4頁(yè)
第八章.抽象類、接口_第5頁(yè)
已閱讀5頁(yè),還剩15頁(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)介

抽象類、接口NIIT培訓(xùn)鑄就輝煌IT人生目標(biāo):抽象類接口內(nèi)部類枚舉類型抽象類在定義Java方法時(shí)可以只給出方法頭,而不必給出方法體、即方法實(shí)現(xiàn)的細(xì)節(jié),這樣的方法被稱為抽象方法。抽象方法必須使用關(guān)鍵字abstract修飾,包含抽象方法的類必須聲明為抽象類。Java語(yǔ)言規(guī)定,子類必須實(shí)現(xiàn)其父類中的所有抽象方法,否則該子類也只能聲明為抽象類。抽象類不能被實(shí)例化抽象類主要是通過(guò)繼承、再由其子類發(fā)揮作用的,其作用包括兩方面:代碼重用規(guī)劃其他特性:抽象類中可以不包含抽象方法;子類中可以不全部實(shí)現(xiàn)抽象父類中的抽象方法,但此時(shí)子類也只能聲明為抽象類;父類不是抽象類,但在子類中可以添加抽象方法,但子類需聲明為抽象類;抽象類中可以聲明static屬性和方法;為什么使用接口只有抽象方法的抽象類?可以用接口來(lái)表示接口有比抽象類更好的特性:1.可以被多繼承2.設(shè)計(jì)和實(shí)現(xiàn)完全分離3.更自然的使用多態(tài)4.更容易搭建程序框架5.更容易更換實(shí)現(xiàn)

……

用接口代替這樣的抽象類,是因?yàn)椋菏裁词墙涌谡J(rèn)識(shí)一下接口必須知道的接口特性接口不可以被實(shí)例化實(shí)現(xiàn)類必須實(shí)現(xiàn)接口的所有方法實(shí)現(xiàn)類可以實(shí)現(xiàn)多個(gè)接口接口中的變量都是靜態(tài)常量publicinterfaceMyInterface

{publicvoidfoo();//其他方法}所有方法都是:publicabstract抽象類除外Java中的多繼承常作為類型使用如何使用接口用程序描述USB接口如何使用接口可以使用Java接口來(lái)實(shí)現(xiàn)

USB接口本身沒(méi)有實(shí)現(xiàn)任何功能

USB接口規(guī)定了數(shù)據(jù)傳輸?shù)囊?/p>

USB接口可以被多種USB設(shè)備實(shí)現(xiàn)編寫USB接口實(shí)現(xiàn)USB接口使用USB接口根據(jù)需求設(shè)計(jì)方法實(shí)現(xiàn)所有方法用多態(tài)的方式使用如何使用接口編碼實(shí)現(xiàn)publicclassUDiskimplementsUsbInterface{publicvoidservice(){System.out.println("連接USB口,開(kāi)始傳輸數(shù)據(jù)。");}}publicinterfaceUsbInterface{/***USB接口提供服務(wù)。*/voidservice();}UsbInterfaceuDisk=newUDisk();uDisk.service();編寫接口實(shí)現(xiàn)接口使用接口實(shí)現(xiàn)接口使用的關(guān)鍵字用接口實(shí)現(xiàn)多態(tài)多個(gè)接口使用“,”分隔面向接口編程開(kāi)發(fā)打印機(jī)墨盒:彩色、黑白紙張類型:A4、B5墨盒和紙張都不是打印機(jī)廠商提供的打印機(jī)廠商要兼容市場(chǎng)上的墨盒、紙張面向接口編程用面向接口編程的方式開(kāi)發(fā)制定墨盒、紙張的約定或標(biāo)準(zhǔn)打印機(jī)廠商使用墨盒、紙張的標(biāo)準(zhǔn)開(kāi)發(fā)打印機(jī)其他廠商按照墨盒、紙張的標(biāo)準(zhǔn)生產(chǎn)墨盒、紙張定義墨盒接口InkBox定義紙張接口Paper定義打印機(jī)類實(shí)現(xiàn)墨盒接口實(shí)現(xiàn)紙張接口約定墨盒標(biāo)準(zhǔn)約定紙張標(biāo)準(zhǔn)用墨盒、紙張接口實(shí)現(xiàn)打印方法墨盒和紙張的規(guī)格是一種約定打印機(jī)需要遵守這些約定面向接口編程publicinterfacePaper{

/**

*得到紙張大小

*@return紙張大小

*/

publicStringgetSize();}紙張的實(shí)現(xiàn)publicinterfaceInkBox{

/**

*得到墨盒顏色

*@return墨盒顏色

*/

publicString

getColor();}墨盒的實(shí)現(xiàn)嵌套類Java語(yǔ)言支持類的嵌套定義,即允許將一個(gè)類定義在其他類的內(nèi)部,其中內(nèi)層的類被稱為嵌套類(NestedClass)。嵌套類可以分為兩種:靜態(tài)嵌套類(StaticNestedClass):使用static修飾的嵌套類;內(nèi)部類(InnerClass):非static的嵌套類。publicclassA{…privateclassB{//內(nèi)部類

…}publicstaticclassC{//靜態(tài)嵌套類

…}}內(nèi)部類內(nèi)部類又可分為三種情況:1.普通的內(nèi)部類:在Java類中、方法或語(yǔ)句塊的外部定義的非static類。2.局部?jī)?nèi)部類:也稱局部類(LocalClass),定義在方法或語(yǔ)句塊中的類。3.匿名內(nèi)部類:也稱匿名類(AnonymousClass),定義在方法或語(yǔ)句塊中,該類沒(méi)有名字、只能在其所在之處使用一次。內(nèi)部類內(nèi)部類與其所在的外層類之間存在著邏輯上的依賴關(guān)系——內(nèi)部類的對(duì)象不能單獨(dú)存在,它必須依賴一個(gè)其外層類的對(duì)象;在內(nèi)部類中可以直接訪問(wèn)其外層類中的成員、包括屬性和方法,即使這些屬性和方法是private的。內(nèi)部類可以聲明為抽象類,因此可以被其它的內(nèi)部類繼承。也可以聲明為final的。和外層類不同,內(nèi)部類可以聲明為private或protected。使用內(nèi)部類(1)publicclassA{privateints;publicclassB{publicvoidmb(){s=100;//p3System.out.println("在內(nèi)部類B中s="+s);}}publicvoidma(){Bi=newB();//p2i.mb();}}publicclassTestInner{publicstaticvoidmain(Stringargs[]){Ao=newA();//p1o.ma();}}使用內(nèi)部類(2)使用內(nèi)部類(3)在外部使用其他類中的內(nèi)部類時(shí),應(yīng)指明其完整層次,并顯式建立對(duì)象間的依賴關(guān)系。publicclassA{privateints;publicclassB{publicvoidmb(){ System.out.println(s);}}}publicclassTestInner2{publicstaticvoidmain(String[]args){Aa=newA();//創(chuàng)建一個(gè)依賴于a而存在的bA.Bb=a.newB();b.mb();}}使用內(nèi)部類(4)內(nèi)部類中出現(xiàn)變量命名沖突時(shí),可以使用內(nèi)部類對(duì)象的特殊屬性"<外層類名>.this"來(lái)訪問(wèn)其所依賴外層類對(duì)象的成員。classA{privateints=111;publicclassB{privateints=222;publicvoidmb(ints){System.out.println(s);//局部變量sSystem.out.println(this.s);//內(nèi)部類對(duì)象的屬性sSystem.out.println(A.this.s);//外層類對(duì)象屬性s}}}publicclassTestInner3{publicstaticvoidmain(Stringargs[]){Aa=newA();A.Bb=a.newB();b.mb(333);}}枚舉類型JavaSE5.0開(kāi)始,Java語(yǔ)言引入了一種新的引用數(shù)據(jù)結(jié)構(gòu)——枚舉(Enum)。Java語(yǔ)言中枚舉類型均自動(dòng)繼承了java.lang.Enum類(該類繼承了Objec類)。枚舉類型使用一組常量值來(lái)表示特定的數(shù)據(jù)集合,該集合中數(shù)據(jù)的數(shù)目確定(通常較少),且這些數(shù)據(jù)只能取預(yù)先定義的值publicenumWeek{ MON,TUE,WED,THU,FRI,SAT,SUN}publicclassTestEnum{publicstaticvoidmain(String[]args){TestEnumte=newTestEnum();te.work(Week.SUN);}publicvoidwork(Weekday){if(day.equals(Week.SAT)){ System.out.println("購(gòu)物!");}elseif(day.equals(Week.SUN)){ System.out.println("祈禱!");}else{ System.out.println("工作!");}}}組合使用枚舉類型與switch語(yǔ)句publicclassTestEnumInSwitch{publicstaticvoidmain(String[]args){TestEnumInSwitchteis=newTestEnumInSwitch();teis.work(Week.FRI);}publicvoidwork(Weekday){switch(day){caseMON:caseTUE:caseWED:

溫馨提示

  • 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)論