1. 程式人生 > >方法中定義內部類

方法中定義內部類

如下所示程式碼為在方法內部定義一個內部類:
public class FunOuter {
int out_x = 100;
public void test(){
class Inner{
String x = "x";
void display(){
System.out.println(out_x);
}
}
Inner inner = new Inner();
inner.display();
}
public void showStr(String str){
//public String str1 = "test Inner";//不可定義,只允許final修飾
//static String str4 = "static Str";//不可定義,只允許final修飾
String str2 = "test Inner";
final String str3 = "final Str";
class InnerTwo{
public void testPrint(){
System.out.println(out_x);//可直接訪問外部類的變數
//System.out.println(str);//不可訪問本方法內部的非final變數
//System.out.println(str2);//不可訪問本方法內部的非final變數
System.out.println(str3);//只可訪問本方法的final型變數成員
}
}
InnerTwo innerTwo = new InnerTwo();
innerTwo.testPrint();
}
public void use(){
//Inner innerObj = new Inner();//此時Inner己不可見了。
//System.out.println(Inner.x);//此時Inner己不可見了。
}
public static void main(String[] args) {
FunOuter outer = new FunOuter();
outer.test();
}
}
從上面的例程我們可以看出定義在方法內部的內部類的可見性更小,它只在方法內部
可見,在外部類(及外部類的其它方法中)中都不可見了。同時,它有一個特點,就是方法
內的內部類連本方法的成員變數都不可訪問,它只能訪問本方法的final型成員。同時另一個
需引起注意的是方法內部定義成員,只允許final修飾或不加修飾符,其它像static等均不可用。