Java 內部類


Java 內部類



(1)內部類定義

 定義在類內部的類叫做內部類,縮小了可見性。


(2)內部類的分類

根據內部類的定義結構不同,可以把內部類分爲兩種:成員式和局部式;

成員式:定義的地方與成員變量和成員方法類似,就像類的一個成員一樣;

局部式:定義在方法體中,僅屬於局部範圍所有;

 

成員式內部類:可以分爲靜態內部類和成員內部類

局部式內部類:普通局部內部類和匿名內部類

 

(3)靜態內部類

無法訪問外部類的非靜態成員。它可以在沒有外部類對象的情況下,單獨創造一個內部類對象。


總結一下:靜態內部類相對於外部類來說,僅僅是包含關係,縮小了命名空間,完整類名中多了一個外部類的名稱

在本質上是兩個獨立的類,JVM也不知道它們兩個有包含關係。(這一點也有可能被考察)

 

(4)成員內部類

  必須等外部類創建對象後纔會被加載到JVM中,它屬於外部類的某個實例,因此可以訪問外部類的靜態和非靜態成員。

語法比較特殊

 

(5)局部內部類

本質上說,局部內部類也是獨立的類,只不過它的使用受到限制。不能使用static,只能訪問使用final和abstract關鍵字,僅可以訪問外部類帶有final關鍵字的局部變量,因爲它訪問的是一個字面量或鏡像,該局部變量已經不存在。但是可以訪問任意外部類對象的成員變量。

 

(6)匿名內部類

工作原理相當於局部內部類,只是沒有一個具體的名字而已,用法相當靈活,外部也無法直接使用它。


(7)爲什麼需要使用內部類

1) 內部類方法可以訪問該類定義所在作用域中的數據,包括私有的數據

2)  內部類可以對同一個包的其他類隱藏起來

3)  當想要定義一個回調函數且不想編寫大量代碼時,使用匿名內部類比較便捷

 

要與c++中的嵌套類區分開,嵌套類的兩個好處:

1)  命名控制

2)  訪問控制

 




發佈了40 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章