方法中内部类不能访问该方法的局部变量是因为:
方法中声明内部类,目的只是由外部类来控制内部类的可见性,
将一个类放到一个方法当中去定义的时候,那么就限定了这个类的使用范围只能在方法的内部,
我们只是代码这样写而已,不要理解成为在这个方法内部有一个类,这个类是方法的一部分,
一调这方法类执行什么什么的.. 不是的,
我们只是代码这样写,目的是为了控制内部类的可见性,编译之后的结果,也会出现 外部类 和 内部类
各自的字节码class文件,这就说明内部类是一个独立的个体,他们就是两个类而已,他们各自都有自己
的成员变量和方法。
那么这个在方法中声明的内部类里面当然不能访问该方法的局部变量了,他们就是各自单独的两个类,
你在一个类里面可以通过该类引用访问他的成员变量或者方法,
但是方法中内部声明的局部变量的作用域只是这个方法内部,你无法访问这个局部变量,根本访问不了
举个例子:
//内部类,可以等同的当成一个方法来看待
class Test{
int i;
void outMethod(int i){ i = 2;}//一个成员方法,可以直接调用成员属性
class OutTest{
void outMethod(){
i = 2; //所以一个成员内部类也可以直接访问成员属性
}
}
public static void main(String[] args) {
int j = 2;
final int k =5;
class InTest{
int inMethod(int j){ return j = j + k;}//final因为是不可变的常量,所以给了特权
}
InTest it = new InTest();
j = it.inMethod(j);//所以同样的,方法内部类也只能传参,不能直接拿到变量
Test t = new Test();
t.outMethod(j);//在方法内再调用方法,只能通过传参
}
} |