1. 程式人生 > >如何呼叫區域性內部類中的方法

如何呼叫區域性內部類中的方法

內部類:將類寫在其他類的內部,可以寫在其他類的成員位置和區域性位置

區域性內部類:將類寫在其他類的區域性方法中

例如

public class outer {
	public void out(){
		int i=2;
		class Inner{
			int a=1;
			public void inner(){
				System.out.println(a);
			}		
		}
	}
}

其中Inner就是區域性內部類

那麼如何呼叫Inner類中的inner()方法呢?

我們知道,在main方法中是沒有辦法直接呼叫類的方法中的區域性變數,例如上面程式碼中的區域性變數i是沒有辦法直接呼叫的。但是可以修改out()方法的返回值呼叫i。

而區域性內部類呼叫,只能在out()方法中new一個物件來呼叫。

例如

public class outer {
	public void out(){
		int i=2;
		class Inner{
			int a=1;
			public void inner(){
				System.out.println(a);
			}		
		}
		Inner in=new Inner();
		in.inner();
	}
}

或者使用匿名物件呼叫

public class outer {
	public void out(){
		int i=2;
		class Inner{
			int a=1;
			public void inner(){
				System.out.println(a);
			}		
		}
		new Inner().inner();
	}
}
注意 匿名物件沒有引用變數,只能使用一次,每次建立一個匿名物件都在堆中分配記憶體,都具有不同的記憶體地址。建立多了比較浪費資源。