为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

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

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

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

正在回答

1 回答

因为是在本类的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

2 回复 有任何疑惑可以回复我~
#1

double_kill 提问者

懂了,非常感谢!讲的很细致。
2015-11-24 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信