深入理解Java中为什么内部类可以访问外部类的成员

 我来答 举报
toldmetoldu
2016-08-01 · TA获得超过121个赞
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:62.6万
展开全部


内部类不能是静态内部类!

  非静态的内部类在编译后会有外部类对象的引用,所以构造这种内部类必须先构造外部对象,再用外部对象构造内部对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    @Test
    public void testNested() {
        Clazz obj = new Clazz();
        Nested nested = obj.new Nested();
        nested.print();
    }
     
    class Clazz {
        Integer id;
         
        class Nested {
            String name;
            public void print() {
                System.out.println(id);
            }
        }
    }

注意nested对象的this$1成员变量,类型是外部类,对象id和obj的id是相同的(id=49)。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式