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

来源:7-6 Java 中的成员内部类

double_kill

2015-11-23 21:58

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

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

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

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

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

写回答 关注

1回答

  • 天启之魂
    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

    double...

    懂了,非常感谢!讲的很细致。

    2015-11-24 22:50:41

    共 1 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530559 学习 · 6091 问题

查看课程

相似问题