| 訪問者 \ 被訪問 | 實例變量 | 靜態變量 | 實例方法 | 靜態方法 |
|---|---|---|---|---|
| 實例方法 | ✓ | ✓ | ✓ | ✓ |
| 靜態方法 | ✗ (需對象引用) | ✓ | ✗ (需對象引用) | ✓ |
this 引用,故不能直接訪問實例變量/方法(需創建對象實例後通過引用訪問)。this,可訪問所有成員。public class Demo {
static int sVar = 1;
int iVar = 2;
static void sMethod() {
System.out.println(sVar); // ✓
// System.out.println(iVar); // ✗ 編譯錯誤
Demo d = new Demo();
System.out.println(d.iVar); // ✓ 通過對象訪問
}
void iMethod() {
System.out.println(sVar); // ✓
System.out.println(iVar); // ✓
sMethod(); // ✓
iMethod(); // ✓ 遞歸調用自身
}
}
靜態變量可以訪問靜態方法 ✓
實例變量可以訪問靜態方法 ✗(變量不「訪問」方法,方法訪問變量)
實例變量可以訪問實例方法 ✗(同理)
正確表述應為:靜態方法只能直接訪問靜態成員;實例方法可訪問所有成員。