2013-06-01 93 views
-1

我有私人int一個變量,我通過test.a訪問這個變量。爲什麼這是好的?我認爲這種方式是可能的,只有當我有一個變量公共變量,而不是私人。爲什麼我可以在這種情況下訪問私有變量?

public class Test { 

    private int a; 

    public static void main(String[] args) { 
     Test test = new Test(5); 
     System.out.println(test.a); 
    } 

    public Test (int a) { 
     this.a = a; 
    } 
} 
+0

方法名'Test'是一種混亂。實質上,它是一個二傳手。我建議你把它改成'setA'。 – Mingyu

+3

這是一個構造函數,而不是一個方法。沒有其他方法來定義構造函數。與類匹配的名稱和缺少返回類型的是如何告訴它是一個構造函數。 –

+0

是的,它是一個構造函數,它不是setter。 –

回答

11

因爲你main方法是在同一個類可以訪問它。

+3

是的......但是這需要一些擴展;)更具體地說,可以從同一個類中的任何地方訪問一個'private'變量,這也包括內部類。 – fge

+0

謝謝!在這種情況下,我不知道這是可能的。 –

5

根據the documentation

私人修飾符指定了成員只能在自己的類訪問。

這包括你可以在課堂上的一切:靜態方法,內部類(靜態或沒有),匿名類,...

+2

請注意,無法從靜態成員內訪問實例(非靜態)成員。 'test.a'可以被訪問的原因是'test'是一個局部變量,並且不涉及'Test'類。 –