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

在外部类的方法中为什么我可以直接创建内部对象??

http://img1.sycdn.imooc.com//5831385c00019b8313400846.jpg

为什么public void outer_2(){}这个方法里我直接就创建了一个内部类的对象   Inner inner=new Inner();不是说内部类的对象要先通过先创建外部类对象然后通过外部类对象.new Inner()的形式创建吗??


正在回答

3 回答

这个你首先要清楚内部类与外部类的关系,

必须先有外部类的对象才能生成内部类的对象,因为内部类的作用就是为了访问外部类中的成员变量

在其他地方需先创建外部类对象的原因是:通过外部类对象传递一个外部类的引用给将要创建的内部类,然后通过外部类对象.new Inner()的形式创建,但是在包含本内部类的外部类的方法中,引用本就包含在类中,因此可以直接创建内部类对象,其实new Inner()在外部类的方法中相当于this.new Inner()


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

一luckydog一 提问者

。。看懂了,谢谢
2016-11-20 回复 有任何疑惑可以回复我~

简单举个例,不拿内部类来说,对于方法调用

583149af0001f83505000418.jpg

583149af0001638505000404.jpg

的作用是一样的,从某种意义上来说,this等价于本类的对象。

(本人新手,有不对的的地方欢迎指正)

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

我觉得是外部类和内部类不同名  不过应该不是这个

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

一luckydog一 提问者

这个其实是因为我这个方法是在外部类里的,外部类里的方法可以直接用内部类名.对象的方法来创建对象。。。如果我这个方法是外部类以外的方法那么在方法里创建内部类对象时就要先创建外部类对象,然后用内部类名.对象=外部类对象.new 内部类名();的方式来创建内部类对象。。。。一句话就是因为我的方法还是在外部类里的
2016-11-21 回复 有任何疑惑可以回复我~
#2

慕粉2220415365 回复 一luckydog一 提问者

为什么方法是在外部类里呢?我看着是在内部类里面啊
2016-12-21 回复 有任何疑惑可以回复我~
#3

天润 回复 一luckydog一 提问者

看明白了 谢谢!
2016-12-23 回复 有任何疑惑可以回复我~
#4

天润 回复 慕粉2220415365

方法outer_2是在内部类以外,外部类以内,再仔细看看吧
2016-12-23 回复 有任何疑惑可以回复我~
#5

慕粉2220415365 回复 天润

out-2的确是在外部类里面,我说的innter-f1()方法是在内部类里面,在外部类方法中,要调用内部类方法,需要创建内部类对象。这时不是要 通过外部类对象来创建内部类对象吗
2016-12-23 回复 有任何疑惑可以回复我~
#6

奶比慕丝3485367 回复 一luckydog一 提问者

还是没有看懂咋,创建对象不是只能在测试类中创建吗,为什么直接在外部类的方法中创建了内部类的对象啊,而且有什么用啊
2023-05-18 回复 有任何疑惑可以回复我~
查看3条回复

举报

0/150
提交
取消

在外部类的方法中为什么我可以直接创建内部对象??

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