1. 程式人生 > >java中的內部類和外部類的區別

java中的內部類和外部類的區別

   由於方法中的宣告的變數,它是在方法執行時,載入到棧記憶體中,隨著方法執行結束就會被銷燬釋放。而匿名內部類是類成員的一種,它的生命週期跟外部類是一致的,這就導致方法中的變數被銷燬後,匿名內部類物件還可以訪問它,這顯然不符合邏輯。所以java這樣解決,使用final修飾,首先讓大家都不要再改動,然後匿名內部類會拷貝一份,這樣保證了值的統一性,在方法中的變數被釋放後還是可以訪問。當這個變數是引用變數的時候,也是一樣的。引用變數在棧中的值是物件在堆的記憶體地址,這樣保證了訪問的是同一個物件,但是這個物件還是可以修改自己堆中的值。