问答详情
源自:7-6 Java 中的成员内部类

在外部类的方法中为什么我可以直接创建内部对象??

http://img.mukewang.com/5831385c00019b8313400846.jpg

为什么public void outer_2(){}这个方法里我直接就创建了一个内部类的对象   Inner inner=new Inner();不是说内部类的对象要先通过先创建外部类对象然后通过外部类对象.new Inner()的形式创建吗??


提问者:一luckydog一 2016-11-20 13:49

个回答

  • 七塔
    2016-11-20 14:49:29
    已采纳

    这个你首先要清楚内部类与外部类的关系,

    必须先有外部类的对象才能生成内部类的对象,因为内部类的作用就是为了访问外部类中的成员变量

    在其他地方需先创建外部类对象的原因是:通过外部类对象传递一个外部类的引用给将要创建的内部类,然后通过外部类对象.new Inner()的形式创建,但是在包含本内部类的外部类的方法中,引用本就包含在类中,因此可以直接创建内部类对象,其实new Inner()在外部类的方法中相当于this.new Inner()


  • 七塔
    2016-11-20 15:01:17

    简单举个例,不拿内部类来说,对于方法调用

    583149af0001f83505000418.jpg

    583149af0001638505000404.jpg

    的作用是一样的,从某种意义上来说,this等价于本类的对象。

    (本人新手,有不对的的地方欢迎指正)

  • 胡小明小朋友
    2016-11-20 14:33:54

    我觉得是外部类和内部类不同名  不过应该不是这个