Java中私有字段的访问

Java中私有字段的访问,java,Java,我不明白为什么我可以在类外访问私有inti,而它是私有的 public class Fish { private int i = 1; public static void main(String[] args) { Fish k = new Fish(); k.i = 2; // it IS possible } } 这不是课外活动。你在同一个班 您正在实例化同一类的新实例,因此可以访问该类的私有字段。private意味着只有定义

我不明白为什么我可以在类外访问私有inti,而它是私有的

public class Fish {

    private int i = 1;

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

}

这不是课外活动。你在同一个班


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

private意味着只有定义类可以访问变量


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

您的main方法是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.
     }
}

如果这是其他类中的主要方法,则同一行将失败。

访问修饰符在类级别上工作,而不是在对象级别上工作

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


基本原理如下:封装数据(部分)以便于将来的维护和重构。重构代码时,重构的是类,而不是对象。

不能在类之外访问,主函数是类的一部分