1. 程式人生 > >《java中內部類在區域性時,訪問許可權》

《java中內部類在區域性時,訪問許可權》

/*
內部類定義在區域性時,
1,不可以被成員修飾符修飾
2,可以直接訪問外部類中的成員,因為還持有外部類中的引用。
	但是不可以訪問它所在的區域性中的變數。只能訪問被final修飾的區域性變數。
*/
class Outer
{
	void method(final int a)
	{
		final int y = 4;
		class Inner
		{
			void function()
			{
				System.out.println(a);
			}

		}
		new Inner().function();
	}
}

class Inner 
{
	public static void main(String[] args) 
	{
		new Outer().method(7);
		new Outer().method(8);

		Outer out = new Outer();
		out.method(7);
		out.method(8);
	}
}

Outer out = new Outer();
		out.method(7);
		out.method(8);

這個寫法有些人看了可能會很奇怪,這樣子能編譯通過麼?

被final修飾之後不是不能改變其值了麼?

的確是這樣。

但是,作為一個函式的引數,或者說在一個函式中。

他是在棧記憶體的,隨著函式執行完,他的記憶體也會釋放。

所以,這樣子是不是有錯誤的!