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

关于实例中创建非静态内部类对象的问题

示例代码中创建非静态内部类的对象是这样创建的

Outer o=new Outer();
Inner i=o.new Inner();

这里怎么能够直接使用Inner i声明,难道不应该是

Outer o=new Outer();
o.Inner i=o.new Inner();

这样才对吗?main是一个静态方法怎么能够直接访问非静态成员内部类?

提问者:double_kill 2015-11-23 21:58

个回答

  • 天启之魂
    2015-11-23 22:50:23
    已采纳

    因为是在本类的main方法中创建的内部类对象所以示例中省略了一点东西 有点误导性

    如果是单独开个测试类中来创建非静态的内部类的对象应该是这样

    Outer o=new Outer();

    Outer.Inner in=o.new Inner();

    也可以结合起来直接这样写

    Outer.Inner in = new Outer().new Inner();

    单独说一下 这里这样写Outer.Inner in=o.new Inner();用的Outer.Inner 而不是o.Inner的原因是内部类其实也是一个类文件 只不过内部类的文件名 其实是外部类.内部类.class

    所以你在创建他对象的时候得写出他的类名全称即Outer.Inner