亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Outer.this.b

?如果外部類和內部類具有相同的成員變量或方法,內部類默認訪問自己的成員變量或方法,如果要訪問外部類的成員變量,可以使用 this 關鍵字。
(為什么這里第一個輸出訪問不到外部類中的84分)

//外部類

public class HelloWorld {

? ??

? ? // 外部類中的靜態變量score

? ? private static int score = 84;

? ??

? ? // 創建靜態內部類

public ? ?static ? ? ?class SInner {

? ? ? ? // 內部類中的變量score

? ? ? ? int score = 91;

? ? ? ??

public void show() {

System.out.println("訪問外部類中的score:" +HelloWorld.this.score ? ? ? ? ? ?);

System.out.println("訪問內部類中的score:" + score);

}

}


// 測試靜態內部類

public static void main(String[] args) {

// 直接創建內部類的對象

? ? ? ? SInner si=new SInner();

? ? ? ??

? ? ? ? // 調用show方法

si.show();

}

}


正在回答

3 回答

System.out.println("訪問外部類中的score:" +HelloWorld.this.score ? ? ? ? ? ?);

把HelloWorld(類名)去掉,因為變量名重復,局部變量優先,但是this(代表當前變量)已經做了區分,所以this.score代表的是外部類的變量

1 回復 有任何疑惑可以回復我~
#1

PaulPierce 提問者

非常感謝!
2016-03-09 回復 有任何疑惑可以回復我~

靜態內部類
?用static修飾的內部類,有以下特點:
?(1) 靜態內部類不能直接訪問外部類的非靜態成員,但是可以通過new 外部類().成員的方式訪問
?(2) 若是外部類的靜態成員與靜態類的成員名稱相同,可以通過"類名.靜態成員"訪問外部類的靜態成員;若名稱不相同,則可直接通過成員名直接調用
?(3) 創建靜態內部類的對象時,不需要外部類的對象;
? ? ?創建方法:內部類 對象名 = new 內部類();

0 回復 有任何疑惑可以回復我~

外部類中的score ?是一個靜態變量,不用創建對象即可訪問,但是現在內部和外部類有一個同名的變量;為了區分,就需要說明score到底是哪一個,要外部的,就是HelloWorld.score ? ?內部的直接調用 ? ? 假如外部類中的score是一個非靜態變量,則需要加this

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

Outer.this.b

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號