更新時間:2020-05-07 14:39:18 來源:動力節點 瀏覽4982次
一點睛
匿名內部類適合創建那種只需要一次使用的類,定義匿名內部類的語法格式如下:
從上面的定義可以看出,匿名內部類必須繼承一個父類,或實現一個接口,但最多只能繼承一個父類,或實現一個接口。
兩條規則。
匿名內部類不能是抽象類。
匿名內部類不能定義構造器。由于匿名內部類沒有類名,所以無法定義構造器,但匿名內部類可以初始化塊,可以通過初始化塊來完成構造器需要完成的工作。
二實戰
1點睛
最常用的創建匿名內部類的方式是創建某個接口類型的對象
2代碼
3運行
購買了一個AGP顯卡,花掉了567.8
4說明
定義匿名內部類無須class關鍵字,而是在定義匿名內部類時直接生成該匿名內部類的對象。
由于匿名內部類不能是抽象類,所以匿名內部類必須實現它的抽象父類或接口里包含的所有抽象方法。
三實戰
1點睛
當通過接口來創建匿名內部類時,匿名內部類不能顯示創建構造器,因此匿名內部類里只有一個隱式的無參構造器,故new接口名后的括號里不能傳入參數值。
如果通過繼承父類來創建匿名內部類時,匿名內部類將擁有和父類相似的構造器,此處的相似指的是擁有相同的形參列表。
2代碼
3運行
購買了一個電子示波器,花掉了67.8
匿名內部類的初始化塊...
購買了一個鍵盤,花掉了56.2
當創建以Device為父類的匿名內部類時,既可以傳入參數,代表調用父類帶參數的構造器;也可以不傳入參數,代表調用父類無參數的構造器。
當創建匿名內部類時,必須實現接口或抽象父類里的所有抽象方法。如果有需要,也可以重寫父類中的普通方法。
四實戰
1點睛
在Java8之前,Java要求被局部內部類、匿名內部類訪問的局部變量必須使用final修飾,從Java8開始這個限制取消了,Java8更加智能:如果局部變量被匿名內部類訪問,那么該局部變量相對于自動使用了final修飾。
2代碼
3結果
8
4說明
Java8將這個功能稱為“effectivelyfinal”,它的意思是對于被匿名內部類訪問的局部變量,可以用final修飾,也可以不用final修飾,但必須按照有final修飾的方式來使用——也就是一次賦值后,以后不能重新賦值。
以上就是動力節點java培訓機構的小編針對“基礎學習,Java中匿名內部類原理與用法詳解”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習