在Java中访问私有字段

时间:2010-12-02 21:28:14

标签: java

我不明白为什么我可以在私有的时候访问课外的private int i

public class Fish {

    private int i = 1;

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

}

5 个答案:

答案 0 :(得分:6)

你的主要方法是Fish类的一部分不是吗?

以下不起作用:

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 :(得分:6)

访问修饰符适用于类级别而非对象级别

您可以访问k.i,因为代码位于与声明成员i相同的类中。

理由是(afaik)以下内容:您(部分)封装数据以便于将来维护和重构。重构代码时,重构类,而不是对象。

答案 2 :(得分:2)

私有意味着只有定义才能访问该变量。

您的主要方法是类Fish的方法,因此允许访问变量

答案 3 :(得分:1)

这不是课外的。你在同一个班级。

您正在实例化同一个类的新实例,因此您可以访问此类的私有字段。

答案 4 :(得分:0)

如果这是SomeOtherClass中的主要方法,则相同的行将失败。