課程
/后端開發(fā)
/Java
/Java入門第二季 升級版
為什么訪問外部類的中的b:那里不能 直接 Outer.b ? 而是要Outer.this.b
2015-06-27
源自:Java入門第二季 升級版 7-6
正在回答
我來說一個比較容易理解的。
因為System.out.println這個指令在Inner里,它去輸出變量的時候取的是就近的變量值,所以O(shè)uter.b取的是Inner類內(nèi)的值,雖然寫的是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所在的這個類。
應(yīng)該這么說,如果訪問的外部類屬性是靜態(tài)的可以不用this,可以直接用外部類名.屬性名,但如果是非靜態(tài)的就必須用外部類名.this表示當前外部類的對象再加上.屬性名,以表示訪問的是外部類的屬性
為什么不是Outer.b和Inner.b之間訪問呢
我也有這樣的疑問
因為在內(nèi)部類中也有個變量b,所以需要這樣寫
haiya
舉報
課程升級!以終為始告別枯燥,在開發(fā)和重構(gòu)中體會Java面向?qū)ο缶幊痰膴W妙
1 回答為什么不能訪問外部類,而要加static
3 回答要訪問外部類中的變量b該怎么訪問
1 回答為什么在內(nèi)部類訪問外部類的name要加this然而age也是內(nèi)部類訪問外部類就可以不用
3 回答為什么不能通過對象訪問外部類中的name
3 回答為什么訪問外部類的的name,this前不加外部類名,也能得到要的輸出。
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2015-10-05
我來說一個比較容易理解的。
因為System.out.println這個指令在Inner里,它去輸出變量的時候取的是就近的變量值,所以O(shè)uter.b取的是Inner類內(nèi)的值,雖然寫的是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所在的這個類。
2015-07-24
應(yīng)該這么說,如果訪問的外部類屬性是靜態(tài)的可以不用this,可以直接用外部類名.屬性名,但如果是非靜態(tài)的就必須用外部類名.this表示當前外部類的對象再加上.屬性名,以表示訪問的是外部類的屬性
2015-07-18
為什么不是Outer.b和Inner.b之間訪問呢
2015-07-03
我也有這樣的疑問
2015-06-29
因為在內(nèi)部類中也有個變量b,所以需要這樣寫