更新時(shí)間:2020-05-29 15:33:02 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2139次
Java匿名內(nèi)部類原理與用法,結(jié)合實(shí)例形式分析了Java匿名內(nèi)部類的概念、原理、應(yīng)用與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下:
匿名內(nèi)部類適合創(chuàng)建那種只需要一次使用的類,定義匿名內(nèi)部類的語法格式如下:
從上面的定義可以看出,匿名內(nèi)部類必須繼承一個(gè)父類,或?qū)崿F(xiàn)一個(gè)接口,但最多只能繼承一個(gè)父類,或?qū)崿F(xiàn)一個(gè)接口。
兩條規(guī)則。
匿名內(nèi)部類不能是抽象類。
匿名內(nèi)部類不能定義構(gòu)造器。由于匿名內(nèi)部類沒有類名,所以無法定義構(gòu)造器,但匿名內(nèi)部類可以初始化塊,可以通過初始化塊來完成構(gòu)造器需要完成的工作。
1.點(diǎn)睛
最常用的創(chuàng)建匿名內(nèi)部類的方式是創(chuàng)建某個(gè)接口類型的對(duì)象
2.代碼
3.運(yùn)行
購(gòu)買了一個(gè)AGP顯卡,花掉了567.8
4.說明
定義匿名內(nèi)部類無須class關(guān)鍵字,而是在定義匿名內(nèi)部類時(shí)直接生成該匿名內(nèi)部類的對(duì)象。
由于匿名內(nèi)部類不能是抽象類,所以匿名內(nèi)部類必須實(shí)現(xiàn)它的抽象父類或接口里包含的所有抽象方法。
1.點(diǎn)睛
當(dāng)通過接口來創(chuàng)建匿名內(nèi)部類時(shí),匿名內(nèi)部類不能顯示創(chuàng)建構(gòu)造器,因此匿名內(nèi)部類里只有一個(gè)隱式的無參構(gòu)造器,故new接口名后的括號(hào)里不能傳入?yún)?shù)值。
如果通過繼承父類來創(chuàng)建匿名內(nèi)部類時(shí),匿名內(nèi)部類將擁有和父類相似的構(gòu)造器,此處的相似指的是擁有相同的形參列表。
2.代碼
3.運(yùn)行
購(gòu)買了一個(gè)電子示波器,花掉了67.8
匿名內(nèi)部類的初始化塊...
購(gòu)買了一個(gè)鍵盤,花掉了56.2
當(dāng)創(chuàng)建以Device為父類的匿名內(nèi)部類時(shí),既可以傳入?yún)?shù),代表調(diào)用父類帶參數(shù)的構(gòu)造器;也可以不傳入?yún)?shù),代表調(diào)用父類無參數(shù)的構(gòu)造器。
當(dāng)創(chuàng)建匿名內(nèi)部類時(shí),必須實(shí)現(xiàn)接口或抽象父類里的所有抽象方法。如果有需要,也可以重寫父類中的普通方法。
1.點(diǎn)睛
在Java 8之前,Java要求被局部?jī)?nèi)部類、匿名內(nèi)部類訪問的局部變量必須使用final修飾,從Java 8開始這個(gè)限制取消了,Java 8更加智能:如果局部變量被匿名內(nèi)部類訪問,那么該局部變量相對(duì)于自動(dòng)使用了final修飾。
2.代碼
3.結(jié)果
8
4.說明
Java 8將這個(gè)功能稱為“effectively final”,它的意思是對(duì)于被匿名內(nèi)部類訪問的局部變量,可以用final修飾,也可以不用final修飾,但必須按照有final修飾的方式來使用——也就是一次賦值后,以后不能重新賦值。
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“編程技術(shù)語言,Java匿名內(nèi)部類原理與用法詳解”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743