匿名類(lèi)一定是內(nèi)部類(lèi)嗎 內(nèi)部類(lèi)和匿名內(nèi)部類(lèi)是什么?有什么作用?
內(nèi)部類(lèi)和匿名內(nèi)部類(lèi)是什么?有什么作用? 1. 內(nèi)部類(lèi):內(nèi)部類(lèi)是在另一個(gè)類(lèi)中定義的類(lèi)。使用它有三個(gè)主要原因:內(nèi)部類(lèi)方法可以訪問(wèn)類(lèi)定義范圍內(nèi)的數(shù)據(jù),包括私有數(shù)據(jù)。內(nèi)部類(lèi)可以對(duì)同一包中的其他類(lèi)隱藏。當(dāng)您想定
內(nèi)部類(lèi)和匿名內(nèi)部類(lèi)是什么?有什么作用?
1. 內(nèi)部類(lèi):內(nèi)部類(lèi)是在另一個(gè)類(lèi)中定義的類(lèi)。使用它有三個(gè)主要原因:內(nèi)部類(lèi)方法可以訪問(wèn)類(lèi)定義范圍內(nèi)的數(shù)據(jù),包括私有數(shù)據(jù)。內(nèi)部類(lèi)可以對(duì)同一包中的其他類(lèi)隱藏。當(dāng)您想定義回調(diào)函數(shù)而不想編寫(xiě)大量代碼時(shí),使用匿名內(nèi)部類(lèi)是很方便的。
2. 局部?jī)?nèi)部類(lèi):在討論匿名內(nèi)部類(lèi)之前,讓我們先看一下在方法中定義的局部?jī)?nèi)部類(lèi)。不能使用公共或私有訪問(wèn)說(shuō)明符聲明本地內(nèi)部類(lèi)。它的作用域僅限于聲明局部?jī)?nèi)部類(lèi)的塊。局部?jī)?nèi)部類(lèi)可以對(duì)外部世界完全隱藏。局部?jī)?nèi)部類(lèi)不僅可以訪問(wèn)它們的外圍類(lèi),還可以訪問(wèn)局部變量。但是,這些局部變量必須聲明為final,如上面代碼中start()方法的參數(shù)beep所示。
3. 匿名內(nèi)部類(lèi)修改上面本地內(nèi)部類(lèi)的代碼,以定義一個(gè)沒(méi)有類(lèi)名的匿名內(nèi)部類(lèi)。除了內(nèi)部類(lèi)的優(yōu)點(diǎn)外,匿名內(nèi)部類(lèi)還可以減少代碼量。
java中,匿名內(nèi)部類(lèi)有什么作用?
您需要了解什么是內(nèi)部類(lèi)、內(nèi)部類(lèi)做什么、Java多態(tài)性以及回調(diào)函數(shù)是什么。匿名內(nèi)部類(lèi)作為函數(shù)的參數(shù)傳遞給方法。在這個(gè)方法中,匿名類(lèi)被接口類(lèi)型接受,然后調(diào)用它的方法,即多態(tài)性。其原理是實(shí)現(xiàn)回調(diào)。因?yàn)樗鼘⒄{(diào)用匿名內(nèi)部類(lèi)中的方法。讓我給你一個(gè)例子:手工點(diǎn)擊的代碼,未測(cè)試的接口{string go()}class test(){public void prtgo(interface IA){系統(tǒng)輸出打?。╥a.o())}公共靜態(tài)void main(String[]args){Test t=new Test()t.prtGo(new InterfaceA(){public String go(){return “go”}}}}