2010-12-02 104 views
2

我不明白爲什麼我可以在私人領域之外訪問private int i訪問Java中的私人領域

public class Fish { 

    private int i = 1; 

    public static void main(String[] args) { 
     Fish k = new Fish(); 
     k.i = 2; // it IS possible 
    } 

} 
+2

你不能在課外訪問,主要功能是類魚的一部分 – Vjy 2010-12-02 21:29:19

回答

6

你的主要方法是魚類的一部分,不是嗎?

下不起作用:

public class Fish { 

    private int i = 1; 

} 

class Reptile{ 
    public static void main(String[] args) { 
     Fish k = new Fish(); 

     k.i = 2; // Compiler error. 
    } 
} 
1

這不是課外課。你在同一班。

您正在實例化相同類的新實例,因此您可以訪問此類的專用字段。

2

私有意味着只有定義的可以訪問該變量。

你的主要方法是類魚的方法,因此它被允許訪問變量

0

如果這是在SomeOtherClass的主要方法,在同一行會失敗。

6

訪問修飾符可以在級別級別不在對象級別

您被允許訪問k.i,因爲代碼位於聲明成員i的同一類中。

理由是(afaik)以下內容:您封裝數據(部分)以便於日後的維護和重構。當你重構代碼時,你重構類而不是對象。