課程
/后端開發(fā)
/Java
/Java入門第二季 升級版
為什么外部類name需要HelloWorld.this.name
而內部類不需要HelloWorld呢
2019-02-16
源自:Java入門第二季 升級版 7-6
正在回答
因為內部和外部類擁有同名的變量。內部類是可以訪問內部類及外部類的所有屬性和方法的,但如果出現(xiàn)同名變量的話,按照就近原則訪問。所以需要HelloWorld.this.name來指代距離較遠的變量。
評論區(qū)上傳一直失敗,假象你處在一個房間A內,A有4個出口,其中一個出口名字為name,房間A外面還有一大的圍欄B,B也有4個出口,其中也有扇門為name,如果只是告訴你去name出口,那默認情況下你會先去A房間的name門,而不是B的name門。
Ly要做學霸
仔細看看,你外部類定義了一個變量name,內部類定義了一個變量name,那么你輸出的時候程序怎么區(qū)分這兩個name呢?
所以才有了外部類、內部類的說法,一個name屬于外部的,一個屬于內部的,
HelloWorld.this.name
HelloWorld??????外部類
this調用最近的對象,方法都可以
name變量
這條語句處于內部類,默認是訪問當前類成員,也就是內部類,加也不影響,但沒必要
Java里面還有一種說法叫做就近原則
內部類和外部類成員名稱相同都是 name,需要區(qū)分使用,用?? “外部類.this.成員名" ? 訪問外部類成員,用"成員名" 直接訪問內部類成員。
舉報
課程升級!以終為始告別枯燥,在開發(fā)和重構中體會Java面向對象編程的奧妙
5 回答public HelloWorld() {
2 回答public HelloWorld與public class HelloWorld有什么區(qū)別?
2 回答HelloWorld o = new HelloWorld (); Inner inn = o.new Inner(); ;和 Inner inn =new Inner (); 怎么理解啊
3 回答/124/1842/NLBf/HelloWorld.java:7: error: ';' expected char HelloWorld star= new HelloWorld(); ^ 1 error
3 回答請問為什么最后HelloWorld hello2=new HelloWorld();會輸出最后2行
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2019-04-22
因為內部和外部類擁有同名的變量。內部類是可以訪問內部類及外部類的所有屬性和方法的,但如果出現(xiàn)同名變量的話,按照就近原則訪問。所以需要HelloWorld.this.name來指代距離較遠的變量。
評論區(qū)上傳一直失敗,假象你處在一個房間A內,A有4個出口,其中一個出口名字為name,房間A外面還有一大的圍欄B,B也有4個出口,其中也有扇門為name,如果只是告訴你去name出口,那默認情況下你會先去A房間的name門,而不是B的name門。
2019-03-28
仔細看看,你外部類定義了一個變量name,內部類定義了一個變量name,那么你輸出的時候程序怎么區(qū)分這兩個name呢?
所以才有了外部類、內部類的說法,一個name屬于外部的,一個屬于內部的,
HelloWorld.this.name
HelloWorld??????外部類
this調用最近的對象,方法都可以
name變量
2019-03-23
這條語句處于內部類,默認是訪問當前類成員,也就是內部類,加也不影響,但沒必要
2019-02-22
Java里面還有一種說法叫做就近原則
2019-02-17
內部類和外部類成員名稱相同都是 name,需要區(qū)分使用,用?? “外部類.this.成員名" ? 訪問外部類成員,用"成員名" 直接訪問內部類成員。