黑马程序员技术交流社区

标题: 内部类问题 [打印本页]

作者: Huan220_欢    时间: 2015-6-23 12:52
标题: 内部类问题
毕老师讲过内部类定义在局部位置上,可以直接访问外部类中的成员。
同时可以访问所在局部中的局部变量,但必须是被final修饰的。
可是我如下写出的代码也可以运行啊!是不是哪里我理解错了?请各位大神帮我顺顺
class Outer{
       int num = 3;
       void method( int y){
              int x = 9;
             class Inner{
                   void show(){
                        System.out.println("show..." + x + "," + y);
                   }
             }
            Inner in = new Inner();
            in.show();
       }
}

class InnerClass{
       public static void main(String[] args){
             new Outer().method(4);
       }
}
运行结果为:show...9,4

作者: guiqulaixi    时间: 2015-6-23 13:43
打印是没问题,你试试修改呢?在内部类里面修改方法的局部变量,你就会发现编译器报错了,实际上编译器编译时偷偷帮你加了final,不过 这很容易误导你,让你看起来像是可以访问局部变量似的
作者: Huan220_欢    时间: 2015-6-23 19:23
guiqulaixi 发表于 2015-6-23 13:43
打印是没问题,你试试修改呢?在内部类里面修改方法的局部变量,你就会发现编译器报错了,实际上编译器编译 ...

哦,谢谢~~原来是这样啊!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2