为什么我可以从 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 倾向于向您隐藏诸如访问修饰符之类的东西,所以您最好不要太担心它。
我在 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 倾向于向您隐藏诸如访问修饰符之类的东西,所以您最好不要太担心它。