java - 为什么不禁止访问私有(private)字段?

标签 java

为了我在大学的学习,我被迫做一些丑陋的 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/

相关文章:

java - Spring批处理作业运行多次

java - Mac OS X 上 UniChar 的正确 JNA 映射是什么?

java - 数组循环的奇怪执行

java - 基于套接字的客户端服务器通信

java - 如何在任何文件夹中执行java.class?

java - 使用单个循环打印菱形数字?

java - 发送响应后Servlet处理数据

java - 仅在本地主机上的 Google App Engine 1.6.4 上使用 Jsoup 时出现 ClassFormatError

OS X 优胜美地上的 Java 8u40

javascript - 如何从 javascript 代码调用外部 java 函数?