A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Huan220_欢 中级黑马   /  2015-6-23 12:52  /  372 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

毕老师讲过内部类定义在局部位置上,可以直接访问外部类中的成员。
同时可以访问所在局部中的局部变量,但必须是被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

2 个回复

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

哦,谢谢~~原来是这样啊!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马