課程
/后端開發
/Java
/Java入門第二季 升級版
為什么內部方法show 訪問外部類的 age成員的時候不用通過this?
2017-06-12
源自:Java入門第二季 升級版 7-6
正在回答
因為內外有同名的成員時,用this來調用外部的成員以區別默認的直接調用內部的。。age唯獨外部類獨有因此不需要了,因為內部類可以直接用外部類的哪怕private了
因為內部類也有name,你想要訪問外部類的name就需要用到this關鍵字,但是age只有外部類有,所以會默認輸出外部類的age值
通過this關鍵字訪問的是當前類的成員屬性;
package com.hwadee.day612;
//外部類HelloWorld
public class HelloWorld{
??
? //外部類的私有屬性name
? private String name = "imooc";
? //外部類的成員屬性
? int age = 20;
//成員內部類Inner
public class Inner {
String name = "愛慕課";
int age = 10;
? ? ? //內部類中的方法
public void show() {?
int age = 30;
System.out.println("外部類中的name:" +HelloWorld.this.name);
System.out.println("內部類中的name:" +name);
System.out.println("外部類中的age:" + HelloWorld.this.age);
System.out.println("內部類中的age:" + this.age);
System.out.println("內部類方法中的age:" + age);
}
//測試成員內部類
public static void main(String[] args) {
? ? ??
? ? ? //創建外部類的對象
HelloWorld o = new HelloWorld ();?
? ? ? //創建內部類的對象
Inner inn =o.new Inner();
? ? ? //調用內部類對象的show方法
inn.show();
當內部類方法局部變量,內部類成員變量,以及外部類的成員變量重名時;可以通過對比加深理解。
因為age不是私有的外部類屬性,而name是私有的外部類屬性
舉報
課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙
2 回答內部類的問題
1 回答內部類的問題
3 回答內部類問題
2 回答外部類使用內部類的問題
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-07-02
因為內外有同名的成員時,用this來調用外部的成員以區別默認的直接調用內部的。。age唯獨外部類獨有因此不需要了,因為內部類可以直接用外部類的哪怕private了
2017-06-20
因為內部類也有name,你想要訪問外部類的name就需要用到this關鍵字,但是age只有外部類有,所以會默認輸出外部類的age值
2017-06-12
通過this關鍵字訪問的是當前類的成員屬性;
package com.hwadee.day612;
//外部類HelloWorld
public class HelloWorld{
??
? //外部類的私有屬性name
? private String name = "imooc";
??
? //外部類的成員屬性
? int age = 20;
??
//成員內部類Inner
public class Inner {
String name = "愛慕課";
int age = 10;
? ? ? //內部類中的方法
public void show() {?
int age = 30;
System.out.println("外部類中的name:" +HelloWorld.this.name);
System.out.println("內部類中的name:" +name);
System.out.println("外部類中的age:" + HelloWorld.this.age);
System.out.println("內部類中的age:" + this.age);
System.out.println("內部類方法中的age:" + age);
}
}
??
//測試成員內部類
public static void main(String[] args) {
? ? ??
? ? ? //創建外部類的對象
HelloWorld o = new HelloWorld ();?
? ? ??
? ? ? //創建內部類的對象
Inner inn =o.new Inner();
? ? ??
? ? ? //調用內部類對象的show方法
inn.show();
}
}
當內部類方法局部變量,內部類成員變量,以及外部類的成員變量重名時;可以通過對比加深理解。
2017-06-12
因為age不是私有的外部類屬性,而name是私有的外部類屬性