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();
}
}
2016-03-04
System.out.println("訪問外部類中的score:" +HelloWorld.this.score ? ? ? ? ? ?);
把HelloWorld(類名)去掉,因為變量名重復,局部變量優先,但是this(代表當前變量)已經做了區分,所以this.score代表的是外部類的變量
2016-03-17
靜態內部類
?用static修飾的內部類,有以下特點:
?(1) 靜態內部類不能直接訪問外部類的非靜態成員,但是可以通過new 外部類().成員的方式訪問
?(2) 若是外部類的靜態成員與靜態類的成員名稱相同,可以通過"類名.靜態成員"訪問外部類的靜態成員;若名稱不相同,則可直接通過成員名直接調用
?(3) 創建靜態內部類的對象時,不需要外部類的對象;
? ? ?創建方法:內部類 對象名 = new 內部類();
2016-03-08
外部類中的score ?是一個靜態變量,不用創建對象即可訪問,但是現在內部和外部類有一個同名的變量;為了區分,就需要說明score到底是哪一個,要外部的,就是HelloWorld.score ? ?內部的直接調用 ? ? 假如外部類中的score是一個非靜態變量,則需要加this