亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

在外部類的方法中為什么我可以直接創建內部對象??

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一 提問者

。??炊耍x謝
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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號