課程
/后端開發(fā)
/Java
/Java入門第二季 升級版
為什么內(nèi)部方法show 訪問外部類的 age成員的時候不用通過this?
2017-06-12
源自:Java入門第二季 升級版 7-6
正在回答
因為內(nèi)外有同名的成員時,用this來調(diào)用外部的成員以區(qū)別默認(rèn)的直接調(diào)用內(nèi)部的。。age唯獨外部類獨有因此不需要了,因為內(nèi)部類可以直接用外部類的哪怕private了
因為內(nèi)部類也有name,你想要訪問外部類的name就需要用到this關(guān)鍵字,但是age只有外部類有,所以會默認(rèn)輸出外部類的age值
通過this關(guān)鍵字訪問的是當(dāng)前類的成員屬性;
package com.hwadee.day612;
//外部類HelloWorld
public class HelloWorld{
??
? //外部類的私有屬性name
? private String name = "imooc";
? //外部類的成員屬性
? int age = 20;
//成員內(nèi)部類Inner
public class Inner {
String name = "愛慕課";
int age = 10;
? ? ? //內(nèi)部類中的方法
public void show() {?
int age = 30;
System.out.println("外部類中的name:" +HelloWorld.this.name);
System.out.println("內(nèi)部類中的name:" +name);
System.out.println("外部類中的age:" + HelloWorld.this.age);
System.out.println("內(nèi)部類中的age:" + this.age);
System.out.println("內(nèi)部類方法中的age:" + age);
}
//測試成員內(nèi)部類
public static void main(String[] args) {
? ? ??
? ? ? //創(chuàng)建外部類的對象
HelloWorld o = new HelloWorld ();?
? ? ? //創(chuàng)建內(nèi)部類的對象
Inner inn =o.new Inner();
? ? ? //調(diào)用內(nèi)部類對象的show方法
inn.show();
當(dāng)內(nèi)部類方法局部變量,內(nèi)部類成員變量,以及外部類的成員變量重名時;可以通過對比加深理解。
因為age不是私有的外部類屬性,而name是私有的外部類屬性
舉報
課程升級!以終為始告別枯燥,在開發(fā)和重構(gòu)中體會Java面向?qū)ο缶幊痰膴W妙
2 回答內(nèi)部類的問題
1 回答內(nèi)部類的問題
3 回答內(nèi)部類問題
2 回答外部類使用內(nèi)部類的問題
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)微信公眾號
2017-07-02
因為內(nèi)外有同名的成員時,用this來調(diào)用外部的成員以區(qū)別默認(rèn)的直接調(diào)用內(nèi)部的。。age唯獨外部類獨有因此不需要了,因為內(nèi)部類可以直接用外部類的哪怕private了
2017-06-20
因為內(nèi)部類也有name,你想要訪問外部類的name就需要用到this關(guān)鍵字,但是age只有外部類有,所以會默認(rèn)輸出外部類的age值
2017-06-12
通過this關(guān)鍵字訪問的是當(dāng)前類的成員屬性;
package com.hwadee.day612;
//外部類HelloWorld
public class HelloWorld{
??
? //外部類的私有屬性name
? private String name = "imooc";
??
? //外部類的成員屬性
? int age = 20;
??
//成員內(nèi)部類Inner
public class Inner {
String name = "愛慕課";
int age = 10;
? ? ? //內(nèi)部類中的方法
public void show() {?
int age = 30;
System.out.println("外部類中的name:" +HelloWorld.this.name);
System.out.println("內(nèi)部類中的name:" +name);
System.out.println("外部類中的age:" + HelloWorld.this.age);
System.out.println("內(nèi)部類中的age:" + this.age);
System.out.println("內(nèi)部類方法中的age:" + age);
}
}
??
//測試成員內(nèi)部類
public static void main(String[] args) {
? ? ??
? ? ? //創(chuàng)建外部類的對象
HelloWorld o = new HelloWorld ();?
? ? ??
? ? ? //創(chuàng)建內(nèi)部類的對象
Inner inn =o.new Inner();
? ? ??
? ? ? //調(diào)用內(nèi)部類對象的show方法
inn.show();
}
}
當(dāng)內(nèi)部類方法局部變量,內(nèi)部類成員變量,以及外部類的成員變量重名時;可以通過對比加深理解。
2017-06-12
因為age不是私有的外部類屬性,而name是私有的外部類屬性