在一个类的方法体中定义的一个内叫做局部内部类
局部内部类可以访问外部类中的成员变量,但是不能访问和他平级的局部变量。
class Outer{
int x=100;
public void show(){
class Inner{
System.out.println("这个是内部类:"+x);
}
}
}
class Demo{
public static void main(String[] args){
System.out.println("Hello World");
}
}
不能访问局部变量
class Outer{
public void show(){
int x=100 //若这样写是错误的,
// 改成 final int x=100;
class Inner{
System.out.println("这个是内部类"+x);
}
}
}
class Demo{
public static void main(String[] args){
System.out.println("Hello World");
}
}
why?
1)int x=100;与class Inner 的对像 new Inner()的生命周期不一样,x的生命周期是从int x=100;代码开始到show()方法的结束,可是new Inner()的生命周期要长。当show()方法结束后,new Inner()还会存在一段时间,直到gvm调用gc垃圾回收器来回收时都是存在的。
sun公司为啦解决这个问题,就采用的是让new Inner()来访问复制的int x ,的变量来用,所以采用的是final来修饰。