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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

这个是一个内部类中还有内部类的情况,当我在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();
    }
}


2 个回复

倒序浏览
我的理解是小数点相当于”的“,Outer.this.num就是Outer的对象的num,所以就是7.
回复 使用道具 举报
Honelyboy 发表于 2014-12-18 19:57
我的理解是小数点相当于”的“,Outer.this.num就是Outer的对象的num,所以就是7.

好的,我已经理解了。谢谢你
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马