資源描述:
《黑馬程序員java教程:匿名內(nèi)部類(lèi)》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、匿名內(nèi)部類(lèi)??定義:??就是內(nèi)部類(lèi)的簡(jiǎn)化寫(xiě)法。??前提:??內(nèi)部類(lèi)可以繼承或?qū)崿F(xiàn)一個(gè)外部類(lèi)或者接口。??格式:??new外部類(lèi)名或者接口名(){覆蓋類(lèi)或者接口中的代碼,(也可以自定義內(nèi)容。)}??簡(jiǎn)單理解:??就是建立一個(gè)帶內(nèi)容的外部類(lèi)或者接口的子類(lèi)匿名對(duì)象。??什么時(shí)候使用匿名內(nèi)部類(lèi)呢???通常使用方法是接口類(lèi)型參數(shù),并且該接口中的方法不超過(guò)三個(gè),可以將匿名內(nèi)部類(lèi)作為參數(shù)傳遞。??好處:??增強(qiáng)閱讀性。??示例1:1.abstractclassDemo{2.????abstractvoidshow();3.}4.5.
2、classOuter{6.????intnum=4;7.8.????voidmethod(){9.????????newDemo(){//匿名內(nèi)部類(lèi)10.????????????voidshow(){11.????????????????System.out.println("show......"+num);12.????????????}13.????????}.show();14.????}15.}16.17.classInnerClassDemo{18.????publicstaticvoidmain(Stri
3、ng[]args){19.????????newOuter().method();20.????}21.}22.復(fù)制代碼??運(yùn)行結(jié)果:??示例2:??1.interfaceInter{2.????voidshow1();3.????voidshow2();4.}5.6.classOuter{7.????publicvoidmethod(){8.????????Interin=newInter(){9.????????????publicvoidshow1(){10.??????????????????System.ou
4、t.println("...show1....");11.????????????}12.????????????publicvoidshow2(){13.??????????????????System.out.println("...show2....");14.????????????}15.????????};16.????????in.show1();17.????????in.show2();18.????}19.}20.21.classInnerClassDemo{22.????publicstaticv
5、oidmain(String[]args){23.????????newOuter().method();24.????}25.}26.復(fù)制代碼??運(yùn)行結(jié)果:???示例3:??1.interfaceInter{2.????voidshow1();3.????voidshow2();4.}5.6./*7.通常的使用場(chǎng)景之一:8.當(dāng)函數(shù)參數(shù)是接口類(lèi)型時(shí),而且接口中的方法不超過(guò)三個(gè)。9.可以用匿名內(nèi)部類(lèi)作為實(shí)際參數(shù)進(jìn)行傳遞。10.*/11.classInnerClassDemo{12.????publicstaticvoid
6、main(String[]args){13.????????show(newInter(){14.????????????publicvoidshow1(){15.????????????????System.out.println("...show1...");16.????????????}17.????????????publicvoidshow2(){18.????????????????System.out.println("...show2...");19.????????????}20.????????}
7、);21.????}1.????publicstaticvoidshow(Interin){2.????????in.show1();3.????????in.show2();4.????}5.}6.復(fù)制代碼??運(yùn)行結(jié)果:??對(duì)象的初始化過(guò)程??示例:?1.classFu{2.????intnum=9;3.4.????{5.????????System.out.println("Fu");6.????}7.8.????Fu(){9.????????super();//Object10.????????//顯示初始化11
8、.????????//構(gòu)造代碼塊初始化12.????????show();1.????}2.????voidshow(){3.????????System.out.println("fushow"+num);//被覆蓋,運(yùn)行子類(lèi)的4.????}5.}6.7.classZiextendsFu{8.????intnum=8;9.10.