更新時間:2020-05-08 16:52:25 來源:動力節點 瀏覽5320次
什么是內部類?
內部類,顧名思義,就是在一個類內部創建的類。
那么,內部類有哪些使用場景?
使用內部類時有哪些坑?
內部類的坑
在內部類中的方法內部,調用外圍類類名.this方法會返回當前內部類所連接的外圍類對象的引用,如下圖:
這有個很合理的解釋:內部類如果使用了外部環境的狀態,那么,內部類加上創建它的外部環境,就叫做閉包。
什么時候會用到內部類?
隱藏某些實現、多繼承、單元測試、閉包問題(即如果一個類繼承了某個父類,這個類還想實現一個接口,但是父類和這接口有些方法或屬性有沖突,想把父類和接口的功能都保留下來,那么,就可以用內部類來配合,用接口加內部類來實現閉包)
繼承內部類時有哪些坑?
繼承自內部類時,使用默認的構造器會報錯,因為內部類會默認的獲得指向其外部類對象的引用,所以繼承內部類時應該在構造器參數中傳遞一個其外部類對象的引用(編譯器要求你一定要這樣做),然后在構造器中使用該外部類對象引用的super方法(該super方法調用的是這個外部類對象的內部類的構造方法)。如果父類和接口都有一個方法,他們的方法簽名相同,那么子類中的這個方法,既是父類方法的重寫又是接口方法的實現。如下面2個圖,
內部類的構造器和其他方法都會默認傳遞一個外圍類對象做參數,如:
去掉這個內部類的無參構造器時,則用反射獲取不到其構造器(即,不顯式的定義內部類構造器,使用反射就獲取不到內部類的構造器【有參無參均獲取不到】),顯式的定義一個無參構造器,則可以獲取到使用了外部類對象當做其默認參數的內部類構造器。
以上就是動力節點java培訓機構的小編針對“Java內部類的使用場景,使用時有哪些坑?”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習