为什么我可以从 class 中更改私有属性?

Why can I change a private attribute out of its class?

我在 Processing 上编写了几个月的代码,我正在尝试使用 java classes。我是 java classes 的新手,我相信 class 的私有属性不能在 class 之外修改。 但是我确实在 Processing 的 setup() void 中更改了一个对象的私有属性。我不明白为什么我能够做到这一点。 有人可以帮我吗?

部分class代码:

public class Character {
  private String name;
  ...

  public Character(String pName, ...) {
    name = pName;
    ...

  public void dname() {
    println(this.name);
  }
}

setup()代码:

void setup() {
  player = new Character("John Doe", ...);
  player.dname();  //I get "John Doe".
  player.name = "tara"; 
  player.dname();  //I get "tara", without any error.
}

非常感谢!

如果这是在处理编辑器中,那么 Java class 是 inner classes 在幕后。

这就是为什么您可以从草图中访问 class 中的私有变量。这也是为什么您可以从 class.

内部访问 Processing 函数的原因

您可以尝试将 class 放在它自己的选项卡中。确保选项卡以 .java 结尾,因此它被视为 "real" Java class.

但是 Processing 倾向于向您隐藏诸如访问修饰符之类的东西,所以您最好不要太担心它。