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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lwj123 金牌黑马   /  2014-12-18 10:16  /  843 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 lwj123 于 2014-12-18 10:19 编辑

这个是一个内部类中还有内部类的情况,当我在Inner1中访问Outer中的成员变量时为什么是Outer.this.num而不是Outer.Inner.this.num

System.out.println("访问的是Outer的num="+Outer.this.num);//7    为什么不是Outer.Inner.this.num

class Outer
{
    private int num = 7;
    private static int x = 8;
    class Inner
    {    int num = 9;
        void print(){
            System.out.println(x);
        }
        class Inner1
        {    int num = 10;
            public void method() {
                int num = 11;
                System.out.println("访问的是Inner1的method()"+num);//11
                System.out.println("访问的是Inner1的成员变量num:"+this.num);//10
                System.out.println("访问的是Inner1的num="+Inner1.this.num);//10
                System.out.println("访问的是Inner的num="+Inner.this.num);//9
                System.out.println("访问的是Outer的num="+Outer.this.num);//7  为什么不是Outer.Inner.this.num
            }
        }
    }
}
public class InnerClassDemo
{
    public static void main(String[] args)
    {
        Outer.Inner.Inner1 in = new Outer().new Inner().new Inner1();
        in.method();
    }
}

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

2 个回复

倒序浏览
因为num是Outer的成员变量,而Outer.Inner.this.num表示的是Inner中的成员变量,楼主再仔细想想

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
后悔药 发表于 2014-12-18 10:28
因为num是Outer的成员变量,而Outer.Inner.this.num表示的是Inner中的成员变量,楼主再仔细想想 ...

哦,懂了懂了,早上写这个绕晕了。谢谢你啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马