內部類不只能夠在類中進行定義,也能夠在類的局部位置定義,如在類的方法或任意的做用域中都可以定義內部類。生命週期
interface Outinterface2 {作用域
}it
class OuterClass3{class
public Outinterface2 doit(final String x) { //doit()方法參數爲final類型變量
//在doit方法中定義一個內部類方法
class innerClass2 implements Outinterface2{im
innerClass2(String s){new
s=x;return
System.out.println(s);參數
}
}
return new innerClass2("doit");
}
}
從上述代碼中能夠看出,內部類被定義在了doit()方法內部。內部類innerClass2是doit()方法的一部分,並不是OutClass3類中的一部分,因此在doit()方法的外部不能訪問該內部類,可是該內部類能夠訪問當前代碼塊的常量以及此外部類的全部成員。
在方法中定義的內部類只能訪問方法中final類型的局部變量,這是由於在方法中定義的局部變量至關於一個常量,它的生命週期超出方法運行的生命週期,因爲該局部變量被設置爲final,因此不能在內部類中改變該局部變量的值。