java初級(jí)及高級(jí)講解ppt - 7.抽象類、接口_第1頁(yè)
java初級(jí)及高級(jí)講解ppt - 7.抽象類、接口_第2頁(yè)
java初級(jí)及高級(jí)講解ppt - 7.抽象類、接口_第3頁(yè)
java初級(jí)及高級(jí)講解ppt - 7.抽象類、接口_第4頁(yè)
java初級(jí)及高級(jí)講解ppt - 7.抽象類、接口_第5頁(yè)
已閱讀5頁(yè),還剩20頁(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)介

第七章抽象類、接口本章目標(biāo)抽象類接口內(nèi)部類枚舉類型抽象類(1)在定義Java方法時(shí)可以只給出方法頭,而不必給出方法體、即方法實(shí)現(xiàn)的細(xì)節(jié),這樣的方法被稱為抽象方法。抽象方法必須使用關(guān)鍵字abstract修飾,包含抽象方法的類必須聲明為抽象類。Java語(yǔ)言規(guī)定,子類必須實(shí)現(xiàn)其父類中的所有抽象方法,否則該子類也只能聲明為抽象類。抽象類不能被實(shí)例化抽象類舉例publicabstractclassQQ{privateintaccount;publicvoidsetAccount(intaccount){this.account=account;}publicintgetAccount(){ returnaccount;}publicabstractvoidshow();}publicclassQQFarmextendsQQ{privateStringname;publicvoidsetName(Stringname){ =name;}publicStringgetName(){ returnname;}publicvoidshow(){//重寫方法

System.out.println(“輸入用戶名,密碼進(jìn)入QQ空間進(jìn)入農(nóng)場(chǎng)");}}抽象類舉例publicclassTest{publicstaticvoidmain(String[]args){QQa=newQQFarm();a.setAccount(20000);a.show();}}抽象類抽象類主要是通過(guò)繼承、再由其子類發(fā)揮作用的,其作用包括兩方面:代碼重用規(guī)劃其他特性:抽象類中可以不包含抽象方法;子類中可以不全部實(shí)現(xiàn)抽象父類中的抽象方法,但此時(shí)子類也只能聲明為抽象類;父類不是抽象類,但在子類中可以添加抽象方法,但子類需聲明為抽象類;抽象類中可以聲明static屬性和方法;練習(xí)參照前述例程,編寫自己的抽象類和應(yīng)用 程序,測(cè)試并體會(huì)抽象類相關(guān)特性。接口(1)接口(interface)是抽象方法和常量值的定義的集合。從本質(zhì)上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒(méi)有變量和方法的實(shí)現(xiàn)。接口(2)接口中定義的屬性必須是publicstaticfinal

的,而接口中定義的方法則必須是public abstract的,因此這些修飾符可以部分或全部省略:和繼承關(guān)系類似,Java類可以“實(shí)現(xiàn)”接口,且接口和實(shí)現(xiàn)類之間也存在多態(tài)性。[<modifier>]class<name>[extends<superclass>] [implements<interface>[,<interface>]*]{declarations>*}publicinterfaceRunner{publicstaticfinalintid=1;publicabstractvoidstart();publicabstractvoidrun();publicabstractvoidstop();}publicinterfaceRunner{intid=1;voidstart();voidrun();voidstop();}//兩者相等接口應(yīng)用舉例publicclassPersonimplementsRunner{publicvoidstart(){ System.out.println("彎腰、蹬腿、咬牙、瞪眼、開(kāi)跑");}publicvoidrun(){ System.out.println("擺動(dòng)手臂、維持直線方向");}publicvoidstop(){ System.out.println("減速直至停止、喝水");}}publicclassTest{publicstaticvoidmain(String[]args){Runnerr=newPerson();r.start();r.run();r.stop();}}接口的多重實(shí)現(xiàn)interfaceRunner{ publicvoidrun();}interfaceSwimmer{ publicvoidswim();}abstractclassAnimal{ publicabstractvoideat();}classPersonextendsAnimalimplementsRunner,Swimmer{ publicvoidrun(){ System.out.println("Iamrunning,tothesea!"); } publicvoidswim(){ System.out.println("Iamswimming,totheisland!"); } publicvoideat(){ System.out.println("Iameating!"); }}接口的多重實(shí)現(xiàn)publicclassTest{publicstaticvoidmain(Stringargs[]){Testt=newTest();Personp=newPerson();t.m1(p);t.m2(p);t.m3(p);}publicvoidm1(Runnerf){ f.run();}publicvoidm2(Swimmers){ s.swim();}publicvoidm3(Animala){ a.eat();}}接口間的繼承interfaceA{ publicvoidma();}interfaceB{ publicintmb(inti);}interfaceCextendsA,B{ publicStringmc();}classDimplementsC{publicvoidma(){ System.out.println("Implementsmethodma()!");}publicintmb(inti){ return2000+i;}publicStringmc(){ return"Hello!";}}接口特性總結(jié)通過(guò)接口可以實(shí)現(xiàn)不相關(guān)類的相同行為, 而不需要考慮這些類之間的層次關(guān)系;接口可以被多重實(shí)現(xiàn);接口可以繼承其它的接口,并添加新的屬 性和抽象方法。接口間支持多重繼承。練習(xí)定義自己的接口、實(shí)現(xiàn)類和測(cè)試程序,體 會(huì)接口的功能和用法嵌套類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}使用枚舉類型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);}publ

溫馨提示

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