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

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

為什么訪問外部類的中的b:那里不能 直接 Outer.b 而是要Outer.this.b

為什么訪問外部類的中的b:那里不能 直接 Outer.b ? 而是要Outer.this.b

正在回答

5 回答

我來說一個比較容易理解的。

因為System.out.println這個指令在Inner里,它去輸出變量的時候取的是就近的變量值,所以Outer.b取的是Inner類內的值,雖然寫的是Out.b的值但實際上取的是Inner.b的值。

Outer.this.b取的外部類的值可以理解成這里的this明確的是告訴程序取Outer這個類的變量值。因為上面那個實際上取的是Inner.b的值,所以不會去用Inner的b

通俗點來講就是如果我讓你去買東西你肯定會找最近的商店去買(System.out.println取的就是最近的變量b,因為Inner的變量b離它最近),如果我指定你去一個遠的商店里去買(Outer里的b),那你就必須去那里買,雖然Inner離你近但是你也不能去那里買。這里的this相當于Outer這個外部類。其實只要理解了this表示什么意思,這個問題不難理解。

我個人是這樣理解this的,this的左邊是誰這個this就代表誰,如果this左邊沒有對象,那么這個this就表示當前this所在的這個類。

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

應該這么說,如果訪問的外部類屬性是靜態的可以不用this,可以直接用外部類名.屬性名,但如果是非靜態的就必須用外部類名.this表示當前外部類的對象再加上.屬性名,以表示訪問的是外部類的屬性

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

為什么不是Outer.b和Inner.b之間訪問呢

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

我也有這樣的疑問

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

因為在內部類中也有個變量b,所以需要這樣寫

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

haiya

但是前面的Outer已經能表面他是外部類了。this代表的是當前對象,Outer.b代表的應該是類的屬性而不是對象的屬性。
2015-07-10 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么訪問外部類的中的b:那里不能 直接 Outer.b 而是要Outer.this.b

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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