2010-12-02 105 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)以下内容:您封装数据(部分)以便于日后的维护和重构。当你重构代码时,你重构类而不是对象。