標籤:
1.局部內部類
1 /* 2 局部內部類 3 A:可以直接存取外部類的成員 4 B:在局部位置,可以建立內部類對象,通過對象調用內部類方法,來使用局部內部類功能 5 6 面試題: 7 局部內部類訪問局部變數的注意事項? 8 A:局部內部類訪問局部變數必須用final修飾 9 B:為什麼呢?10 局部變數是隨著方法的調用而調用,隨著調用完畢而消失。11 而堆記憶體的內容並不會立即消失。所以,我們加final修飾。12 加入final修飾後,這個變數就成了常量。既然是常量。你消失了。13 我在記憶體中儲存的是資料20,所以,我還是有資料在使用。14 */15 class Outer {16 private int num = 10;17 18 public void method() {19 //int num2 = 20;20 //final int num2 = 20;21 class Inner {//如果num2不加final,到方法method()調用運行完畢之後,局部變數就會消失,但是堆記憶體中的new Inner不會立馬消失22 public void show() {//而且對象new Inner()內部還在使用num2,但是前面說過了num2已經提前消失了,所以會出錯,要加final23 System.out.println(num);24 //從內部類中訪問本地變數num2; 需要被聲明為最終類型25 System.out.println(num2);//20---反編譯之後你會看到final效果就是System.out.println(20),直接把num2替換成2026 }27 }28 29 //System.out.println(num2);30 31 Inner i = new Inner();32 i.show();33 }34 }35 36 class InnerClassDemo5 {37 public static void main(String[] args) {38 Outer o = new Outer();39 o.method();40 }41 }
Android(java)學習筆記112:局部位置的內部類的介紹