局部内部类
成员内部类编译后的文件:A$B.class
局部内部类编译后的文件:A$1B.class
局部内部类不能被成员修饰符修饰
1局部内部类访问外部成员
局部内部类只能访问被final修饰符修饰的局部变量(常量),但可以访问外部类的成员变量
class A//外部类
{
int num=3;
void method()//外部类的成员函数
{
final int x=5;// 局部内部类只能访问被final修饰符修饰的局部变量(常量)
class Inner//内部类
{
void show()
{
System.out.println(“inner show run..”+num);
}
}
//内部类定义到了函数Method的函数体中
new B().show();
}
}
class Demo
{
public static void main(String[] args)
{
A a=new a();
a.method();
}
}
局部内部类只能访问被final修饰符修饰的局部变量(常量),作用域不同,不能访问类外的局部变量,但可以访问外部类的成员变量,因为有默认的 外部类.this 成员
静态内部类没有这个外部类.this成员
2局部内部类不能访问局部成员的原因
class A
{
int num=3;
Object obj;
void method()
{
final int x=10;
int y=2;
class B
{
void show()
{
System.out.println(“y=”+y);//访问失败,因为y 的生命周期太短了
//当函数Method销毁之后,B的对象obj仍试图访问函数Method中变量y
}
}
obj=new B();
}
}
|