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

i.show();直接进行调用吗?

主要是这一句Inner i = hello.new Inner(); 如果把new当作一个内存分配的标识的话,是不是可以认为内部类其实并没有在内存中重新获取内存,而是使用的外部类的内存 并且是调用内部类的时候i.show();,显然并没有通过外部类来进行调用这是为什么呢?

正在回答

2 回答

成员内部类需要先创建外部类,才能创建它自己的,这是因为每一个内部类都保存了一个对外部类的一个引用。这很好理解,因为你要实例化这个内部类,肯定是通过外部类的一个实例,而内部类保留的这个引用就是这个外部类实例。可以类比一下方法,你怎么使用一个类里面定义的xxx()方法?肯定是先new一个对象hello,然后再hello.xxx() 这样使用方法。你在定义一个内部类的时候,默认会生成此内部类的构造方法,如何使用此构造方法呢?跟使用普通方法一样。

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

songqi12so 提问者

按照方法直接去理解就可以了吗?
2018-02-18 回复 有任何疑惑可以回复我~

因为你这个show方法本来就是定义在内部类的,没必要通过外部类的对象来调用啊。而且外部类也不能直接访问和使用内部类的对象和方法,必须通过内部类的对象访问。。。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

i.show();直接进行调用吗?

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