关于实例中创建非静态内部类对象的问题
示例代码中创建非静态内部类的对象是这样创建的
Outer o=new Outer(); Inner i=o.new Inner();
这里怎么能够直接使用Inner i声明,难道不应该是
Outer o=new Outer(); o.Inner i=o.new Inner();
这样才对吗?main是一个静态方法怎么能够直接访问非静态成员内部类?
示例代码中创建非静态内部类的对象是这样创建的
Outer o=new Outer(); Inner i=o.new Inner();
这里怎么能够直接使用Inner i声明,难道不应该是
Outer o=new Outer(); o.Inner i=o.new Inner();
这样才对吗?main是一个静态方法怎么能够直接访问非静态成员内部类?
2015-11-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
举报