/*
具备内部类: 在一个类的成员方法内部定义另外一个类,那么另外一个类就称做局部内部类
局部内部类的使用规则:
1. 如果局部内部类访问了一个局部变量,该局部变量必须用final来修饰;
原因:当test方法执行完毕后,那么y马上从内存中消失,而Inner对象在方法执行完毕的时候还没有从内存中消失,而
inner对象的print方法还在访问者y变量,这时候的y变量已经消失了,因此出现了访问故障,为了解决这个问题,就得
延长y的生命周期.
解决方案: 如果一个局部内部类访问一个局部变量的时候,那么久让该局部变量内部类访问这个局部变量的复制品,并且
该变量的指向不能改变,因此就要用final来修饰; 也就是说让复制品和原来的变量时一样的。
*/
class Outer
{
public void test()
{
final int y = 100;
class Inner
{
int x = 10;
public Inner(int x)
{
this.x = x;
}
public void print()
{
System.out.println(x);
System.out.println(y);
}
}
Inner i = new Inner(100);
i.print();
}
}
class Demo4
{
public static void main(String[] args)
{
Outer o1 = new Outer();
o1.test();
}
}