如果我們在乙個類中宣告乙個內部類,在這個內部類中訪問了原來類中的區域性變數,那麼這個區域性變數必須在原來的類中宣告成final,如圖:
class
a}
這是為什麼呢?
答案是,因為在原來的類中執行的函式之類的東西和在內部類中執行的東西是非同步進行的,所以原來類中的函式執行完畢,內部類中的可能還沒有執行完畢,這時候如果我們用什麼方法改變了原來類中區域性變數的值,可能會對內部類中執行的東西造成影響,因此,我們要宣告成final,這樣,原來類的區域性變數一經賦值便不能被更改,就不會影響內部類中的東西了。
內部類,介面,區域性變數
1 介面方法不能包含有方法體,介面方法都是抽象方法 abstract 2 介面方法預設都使用abstract進行修飾,可寫可不寫 自動型別轉換 向上轉型,向下轉型 在內部類中,如果有變數與外部類的變數名稱相同,優先使用內部類的變數 內部類可以直接在外部類中使用,用於完成特定的功能 靜態內部類是外部類...
物件導向 區域性內部類訪問區域性變數的問題
區域性內部類 a 可以直接訪問外部類的成員 b 在區域性位置,可以建立內部類物件,通過物件呼叫內部類方法,來使用區域性內部類功能。面試題 區域性內部類訪問區域性變數的注意事項 a 區域性內部類訪問區域性變數必須用final修飾 b 為什麼呢?因為區域性變數會隨著方法的呼叫而呼叫,隨著呼叫完畢而消失。...
內部類中訪問的區域性變數需用final修飾的原因
此處的內部類指區域性內部類 包括匿名內部類 因為只有區域性內部類才可訪問區域性變數,普通非靜態內部類和靜態內部類不可能訪問方法體內的區域性變數。需用final修飾的原因 對於區域性變數,作用域為該方法內,方法執行結束該區域性變數也隨之消失。但內部類可能會產生隱式的 閉包 閉包使區域性變數脫離它所在的...