資源描述:
《《J接口和內(nèi)部類》PPT課件》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、接口和內(nèi)部類Interfaces&InnerClasses霍秋艷qyhuo@mail.xidian.edu.cn2接口和內(nèi)部類接口和內(nèi)部類為我們提供了一種將接口與實(shí)現(xiàn)分離的更加結(jié)構(gòu)化的方法。Java提供一個(gè)叫做抽象方法的機(jī)制。abstract:類中創(chuàng)建一個(gè)或多個(gè)無(wú)方法體的類。interface:完全抽象類innerclasses看似一個(gè)簡(jiǎn)單的代碼隱藏機(jī)制:可以將一個(gè)類的定義放在另一個(gè)類的定義的內(nèi)部。3抽象類4抽象類是指不能直接被實(shí)例化的類,因此一般作為其它類的超類,與final類正好相反。概念上來(lái)說(shuō)是一
2、個(gè)Java類和接口的混合Whatgoesinanabstractclass?implementcommonstateandbehaviorthatwillbeinheritedbysubclassesdeclaregenericbehaviorsthatsubclassesmustimplement抽象類5abstract關(guān)鍵字放在類明以及方法之前抽象類中的抽象的方法--在該類中定義但不在該類中提供實(shí)現(xiàn),由繼承類提供細(xì)節(jié)publicabstractclassSomeAbstractClass{voidm
3、ethod1(){System.out.println(“Hi,Java”);}voidmethod2();}一個(gè)抽象類甚至可以沒(méi)有抽象方法只要包含有abstract方法,類就必須被聲明為abstract,否則就不能編譯。抽象類的語(yǔ)法6abstractclassAnimalKingdom{privateStringphylum;publicAnimalKingdom(Stringp){phylum=p;}publicStringgetPhylum(){returnphylum;}publicabstra
4、ctvoideat();}抽象類:例定義抽象方法的類必須是抽象類。抽象類中的抽象的方法--在該類中定義但不在該類中提供實(shí)現(xiàn),由繼承類提供細(xì)節(jié)。7抽象類和方法可以有數(shù)據(jù)和定義不可以創(chuàng)建實(shí)例必須定義所有的abstract方法才可以被實(shí)例化(否則類仍然是abstract類)8abstractInstrument一些方法和數(shù)據(jù)可以被定義剩余其它代碼是一樣的…abstractclassInstrument{privateinti;//Storageallocatedforeachpublicabstractvoi
5、dplay(Noten);publicStringwhat(){return"Instrument";}publicabstractvoidadjust();}9接口(interface)和抽象(abstract)類有什么不同?為什么都存在與Java中?什么時(shí)候該用一個(gè)抽象類,什么時(shí)候改用一個(gè)接口?問(wèn)題?接口Interfaces11接口“純(pure)”abstractclass–完全抽象的類允許創(chuàng)建者象建立一個(gè)類一樣進(jìn)行創(chuàng)建:methodnames,argumentlists,andreturntyp
6、es,butnomethodbodies.canalsocontainfields,buttheseareimplicitlystaticandfinal.–常量“所有實(shí)現(xiàn)了該特定接口的類看起來(lái)都像這樣”interface&implements關(guān)鍵字“Theinterfaceiswhatitlookslike,butnotI’mgoingtosayhowitworks.”利用接口可實(shí)現(xiàn)多重繼承(可同時(shí)實(shí)現(xiàn)多個(gè)接口)12InterfacesinterfaceKeyListener{publicvoidke
7、yPressed(KeyEvente);publicvoidkeyReleased(KeyEvente);publicvoidkeyTyped(KeyEvente);}一個(gè)接口描述方法但不提供方法的具體實(shí)現(xiàn)方法名、參數(shù)列表和返回類型13例ordinaryclass14例–代碼interfaceInstrument{//Compile-timeconstant:intI=5;//static&final//Cannothavemethoddefinitions:voidplay(Noten);//Auto
8、maticallypublicStringwhat();voidadjust();}classWindimplementsInstrument{publicvoidplay(Noten){System.out.println("Wind.play()"+n);}publicStringwhat(){return"Wind";}publicvoidadjust(){}}Otherclassesaresimilar15完全解耦只要一個(gè)方法操作的