物件導向 區域性內部類訪問區域性變數的問題

2021-07-23 23:15:57 字數 486 閱讀 8152

/*

區域性內部類:

a:可以直接訪問外部類的成員

b:在區域性位置,可以建立內部類物件,通過物件呼叫內部類方法,來使用區域性內部類功能。

面試題:

區域性內部類訪問區域性變數的注意事項

a:區域性內部類訪問區域性變數必須用final修飾

b:為什麼呢?

因為區域性變數會隨著方法的呼叫而呼叫,隨著呼叫完畢而消失。

而堆記憶體的內容並不會立即消失。所以,我們加final修飾

加入final修飾後,這個這變數就成了常量。既然是常量。你消失了。

我在記憶體中儲存的是資料20,所以,我還是有資料在使用。

*/package cn.inner5;

class outer

} inner i = new inner();

i.show(); }}

class innerclassdemo5

}

內部類,介面,區域性變數

1 介面方法不能包含有方法體,介面方法都是抽象方法 abstract 2 介面方法預設都使用abstract進行修飾,可寫可不寫 自動型別轉換 向上轉型,向下轉型 在內部類中,如果有變數與外部類的變數名稱相同,優先使用內部類的變數 內部類可以直接在外部類中使用,用於完成特定的功能 靜態內部類是外部類...

區域性和匿名內部類區域性變數為final

內部類和外部類是處於同乙個級別的,內部類不會因為定義在方法中就會隨著方法的執行完畢就被銷毀 所以為了防止方法執行完畢,引用了乙個不存在的變數,就copy乙份區域性變數作為內部類的成員變數,當區域性變數沒有之後,實際訪問的是copy的複製品。設定為final,保證一致性,內部類和外部類是處於同乙個級別...

內部類中訪問的區域性變數需用final修飾的原因

此處的內部類指區域性內部類 包括匿名內部類 因為只有區域性內部類才可訪問區域性變數,普通非靜態內部類和靜態內部類不可能訪問方法體內的區域性變數。需用final修飾的原因 對於區域性變數,作用域為該方法內,方法執行結束該區域性變數也隨之消失。但內部類可能會產生隱式的 閉包 閉包使區域性變數脫離它所在的...