為啥是HelloWorld.this.name 這么調用外部類的名字
public void show() { System.out.println("外部類中的name:" +HelloWorld.this.name ? ? ? ? ? ? ? ? ?); 請問這個name又不是靜態成員,為什么可以直接用類名.的方式調用呢?
public void show() { System.out.println("外部類中的name:" +HelloWorld.this.name ? ? ? ? ? ? ? ? ?); 請問這個name又不是靜態成員,為什么可以直接用類名.的方式調用呢?
2015-06-20
舉報
2016-05-27
你理解的真棒,解決了我的問題
package?guqingtong; //外部類HelloWorld public?class?HelloWorld{ ?? ??//外部類的私有屬性name ??private?static?String?name?=?"imooc"; ?? ??//外部類的成員屬性 ??int?age?=?20; ?? ?//成員內部類Inner ?public?class?Inner?{ ??String?name?=?"愛慕課"; ??????//內部類中的方法 ??public?void?show()?{? ???System.out.println("外部類中的name:"?+HelloWorld.?name????????????????); ???System.out.println("內部類中的name:"?+???name???????????????); ???System.out.println("外部類中的age:"?+?age); ??} ?} ?? ?//測試成員內部類 ?public?static?void?main(String[]?args)?{ ?????? ??????//創建外部類的對象 ??HelloWorld?o?=?new?HelloWorld?();? ?????? ??????//創建內部類的對象 ??Inner?inn?=?o.new??Inner?()?????????; ?????? ??????//調用內部類對象的show方法 ??inn.show(); ?} }2015-06-21
謝謝你的回答,那請問為什么可以直接用類名調用呢?
2015-06-21
//外部類HelloWorld
public class HelloWorld{
? ??
? ? //外部類的私有屬性name
? ? private String name = "imooc";
? ??
? ? //外部類的成員屬性
? ? int age = 20;
? ??
//成員內部類Inner
public class Inner {
String name = "愛慕課";
? ? ? ? //內部類中的方法
public void show() {?
System.out.println("外部類中的name:" + HelloWorld.this.name ? ? ? ? ? ? ? ? );
System.out.println("內部類中的name:" + ?name ? ? ? ? ? ? ? ?);
為了區別內部 和 外部(當內部和外部一樣的話),引用外部時,就要這樣;否則就默認內部的name;