Java中的內部類總結

2021-08-21 21:21:46 字數 1546 閱讀 7056

參考

內部類是定義在另乙個類中的類,使用它的原因有:

只有內部類可以是私有類,而常規類只可以具有包可見性或公有可見性

內部類是個編譯時的概念,一旦編譯成功後,它就與外圍類屬於兩個完全不同的類(當然他們之間還是有聯絡的)。對於乙個名為outerclass的外圍類和乙個名為innerclass的內部類,在編譯成功後,會出現這樣兩個class檔案:outerclass.classouterclass$innerclass.class

內部類分為:成員內部類,區域性內部類,匿名內部類,靜態內部類

一 成員內部類(最普通的內部類)

成員內部類是外圍類的乙個成員,所以它可以無限制地訪問外圍類的所有成員屬性和方法(儘管成員屬性是private的),但是外圍類要訪問內部類的成員屬性和方法需要內部類例項來訪問

注意兩點:

推薦使用get***來獲取成員內部類,尤其是該內部類的建構函式無引數時

二 區域性內部類

區域性類不能用public或private訪問說明符進行宣告(一般用預設),它的作用域被限定在宣告這份區域性類的塊中

區域性類有乙個優勢:對外部世界可以完全地隱藏起來

區域性類的方法只可以引定義為final的區域性變數

三 匿名內部類

在做swing程式設計中,我們經常使用這種方式來繫結事件

注意這幾點:

匿名內部類是沒有訪問修飾符的

new出的匿名內部類一定要是存在的

當匿名內部類所在方法的形參被匿名內部類使用時,這個形參必須為final

匿名內部類是沒有構造方法的

四 靜態內部類

關鍵字static不僅可以修飾成員變數,方法,**塊之外,還可以修飾內部類,使用static修飾的內部類稱為區域性內部類

靜態內部類與非靜態內部類的乙個重要的區別在於:非靜態內部類在編譯完成後會儲存乙個引用來指向建立它的外圍類,而靜態內部類沒有,沒有這個引用意味著:它的建立不需要依賴外部類,它不能使用外圍類的任何非static成員變數和方法

package innerclass;

import innerclass.outerclass.innerclass;

public class outerclassdemo2

}// 定義非靜態內部類

非靜態內部類需要通過呼叫外圍類才能呼叫到內部類的成員變數以及方法

java中內部類總結

內部類不是很好理解,但說白了其實也就是乙個類中還包含著另外乙個類 如同乙個人是由大腦 肢體 器官等身體結果組成,而內部類相當於其中的某個器官之一,例如心臟 它也有自己的屬性和行為 血液 跳動 顯然,此處不能單方面用屬性或者方法表示乙個心臟,而需要乙個類 而心臟又在人體當中,正如同是內部類在外部內當中...

java中的內部類總結

如同乙個人是由大腦 肢體 器官等身體結果組成,而內部類相當於其中的某個器官之一,例如心臟 它也有自己的屬性和行為 血液 跳動 顯然,此處不能單方面用屬性或者方法表示乙個心臟,而需要乙個類 而心臟又在人體當中,正如同是內部類在外部內當中 例項1 內部類的基本結構 1 2 3 4 5 6 7 8 9 1...

java中的內部類總結

內部類不是很好理解,但說白了其實也就是乙個類中還包含著另外乙個類 如同乙個人是由大腦 肢體 器官等身體結果組成,而內部類相當於其中的某個器官之一,例如心臟 它也有自己的屬性和行為 血液 跳動 顯然,此處不能單方面用屬性或者方法表示乙個心臟,而需要乙個類 而心臟又在人體當中,正如同是內部類在外部內當中...