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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kenhe 中级黑马   /  2014-12-8 12:11  /  1408 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

毕老师视频中讲到的是:内部类不可以访问它所在局部中的变量,只能访问被final修饰的局部变量。
但是我的这个程序可以运行啊。
class Outer//定义外部类
{
        //int x=3;
        void method()
        {
                int x=6;//局部变量
                class Inner //定义内部类
                {
                        //int x=5;
                        void function()
                        {
                                //int x=4;
                                System.out.println(x);
                        }
                }
                Inner in=new Inner();
                in.function();
        }
}
class OuterInner
{
        public static void main(String[] args)
        {
                Outer out=new Outer();
                out.method();
        }
}
//上面程序有打印结果 6  啊

9 个回复

正序浏览
kenhe 中级黑马 2014-12-8 16:14:54
9#
这是从老师视频中剪辑的错误啊   我自己上面的代码没报错  可以运行

点评

JDK1.8新特性,给你加上了  发表于 2014-12-8 16:16
回复 使用道具 举报
kenhe 发表于 2014-12-8 16:00
那我只能这样给你们看了  
并不是我没有使用到内部类

这不就OK了,不是已经提示你哪里错误了!
回复 使用道具 举报
kenhe 中级黑马 2014-12-8 16:00:44
7#
本帖最后由 kenhe 于 2014-12-8 16:02 编辑

file:///C:/Users/Administrator/Desktop 那我只能这样给你们看了  
并不是我没有使用到内部类

PHP8GO2}ZT~5YVQ4OA%GS$L.jpg (104.45 KB, 下载次数: 26)

PHP8GO2}ZT~5YVQ4OA%GS$L.jpg
回复 使用道具 举报
楼上正解:Outer.Inner out=new Outer().newInner;这才用到了内部类。
回复 使用道具 举报
你在main方法里建立的对象只是建立一个外部类的对象,压根就没有用到内部类,,你叼用方法当然输出的就是method()方法里的6了!  真正用到内部类建立对象的格式是Outer.Inner out=new Outer().newInner;所以骚年 ,你的内部类对象定义的格式就错了,还是应该回去看看熟悉一下!
回复 使用道具 举报
你确定可以??
回复 使用道具 举报
JDK1.8新特性
回复 使用道具 举报
速求各位大侠指点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马