为了我在大学的学习,我被迫做一些丑陋的 Java 基础知识,比如在没有封装的情况下工作,在同一个类中使用 main 方法等。(我不想在 Java 样式指南上展开讨论,我只想澄清一下,我不会在大学以外写这样的东西)
我偶然发现了一种我无法向自己解释的行为:
public class Person {
// fields
private int age;
public static void main(String[] args) {
Person foo1 = new Person();
foo1.age = 40;
System.out.println(foo1.age);
}
}
为什么这段代码编译运行没有错误?我怎么可能访问私有(private)字段?由于在同一个类中有 main 方法而导致奇怪的行为?
最佳答案
因为静态方法 main
是类 Person
的成员,因此可以访问 Person
中的任何私有(private)字段或方法。
你在担心什么?有人会编写一个类,然后能够从他们自己的类中访问这些方法吗?
如果您要担心任何事情,请担心您可以使用反射访问任何类中的私有(private)字段,但对于很多有用的事情来说,这也是必需的。
关于java - 为什么不禁止访问私有(private)字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2126984/