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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 坤儿 中级黑马   /  2014-8-17 10:19  /  1274 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

老毕视频里面说:局部内部类不能访问它所在的局部变量,只能访问局部常量。但为啥下面代码能访问局部变量。

class Outer1
{
        private int num = 0;
        public void show(int a)
        {
                int x = 1;
                class Inner
                {
                        public void function()
                        {
                                //System.out.println(num);//定义在外部类局部的内部类可以直接访问外部类的
                                                        //成员,因为内部类还持有外部内的引用
                                System.out.println(a);        //也可以直接访问局部变量
                                System.out.println(x);
                        }
                }
                 new Inner().function();
        }
}
public class InnerClassDemo2 {

        public static void main(String[] args) {
                // TODO Auto-generated method stub

                Outer1 o = new Outer1();
                o.show(56);
        }

}
输出结果为 :  56  ,1

10 个回复

正序浏览
justin1258 发表于 2014-8-17 14:46
建议楼主看看编译后的字节码...

好的 谢谢
回复 使用道具 举报
占星释 发表于 2014-8-17 18:00
http://blog.sina.cn/dpool/blog/s/blog_487bcddc01013e87.html?  这个链接你看看,可能有帮助。我觉得是有 ...

好的 谢谢
回复 使用道具 举报
占星释 来自手机 中级黑马 2014-8-17 18:00:50
9#
http://blog.sina.cn/dpool/blog/s/blog_487bcddc01013e87.html?  这个链接你看看,可能有帮助。我觉得是有些代码不是不能写,而是写了之后会有问题
回复 使用道具 举报
建议楼主看看编译后的字节码...
回复 使用道具 举报
坤儿 中级黑马 2014-8-17 11:39:15
7#
不再上网 发表于 2014-8-17 11:34
被你忽悠了。明明都编译错误的呀

难道要让我给你开远程你才相信? 你用的java时多时?我的时java1.8 最新版那个。不知到是不是这个原因
回复 使用道具 举报
坤儿 发表于 2014-8-17 11:01
你确定 你看清楚了?

被你忽悠了。明明都编译错误的呀
回复 使用道具 举报
不再上网 发表于 2014-8-17 11:00
a和x变量是外部类的成员变量。

你确定 你看清楚了?
回复 使用道具 举报
a和x变量是外部类的成员变量。
回复 使用道具 举报
碎流 发表于 2014-8-17 10:56
你确定代码无有问题???

必须的  已经跑了多次
回复 使用道具 举报
你确定代码无有问题???
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马