黑马程序员技术交流社区

标题: 这个是一个内部类中还有内部类的情况 [打印本页]

作者: lwj123    时间: 2014-12-18 10:16
标题: 这个是一个内部类中还有内部类的情况
本帖最后由 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();
    }
}


作者: 后悔药    时间: 2014-12-18 10:28
因为num是Outer的成员变量,而Outer.Inner.this.num表示的是Inner中的成员变量,楼主再仔细想想
作者: lwj123    时间: 2014-12-18 10:33
后悔药 发表于 2014-12-18 10:28
因为num是Outer的成员变量,而Outer.Inner.this.num表示的是Inner中的成员变量,楼主再仔细想想 ...

哦,懂了懂了,早上写这个绕晕了。谢谢你啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2