为什么我可以从其类中更改私人属性?

问题描述:

我现在处理几个月的代码,我试图使用java类。我是一个java类的新手,我相信一个类的私有属性不能在这个类之外被修改。 但是我确实在Processing的setup() void中更改了一个对象的私有属性。我不明白为什么我能够做到这一点。 任何人都可以帮助我吗?为什么我可以从其类中更改私人属性?

的类代码的一部分:

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. 
} 

非常感谢您!

+2

** **设置代码位于哪里?这是关键。它与Character类是否在同一个文件中? –

+0

@HovercraftFullOfEels不,设置在主文件中,而Character类位于定义了所有类的文件中。这是如何影响公共/私人机制的? – hiberfil

+1

@hiberfil我从来没有使用过处理,但提到[本文档](https://processing.org/reference/private.html):“这个关键字被用来**禁止其他类访问字段和班级内的方法“(强调我的)。这可能措辞松散,但正如所写的,如果你的'setup()'方法不在类中,这意味着'private'被忽略。 –

如果这是在Processing编辑器中,那么后台的Java类是inner classes

这就是为什么你可以从草图访问类中的私有变量。这也是为什么你可以从你的课堂中获得处理功能的原因。

您可以尝试将该类放在其自己的选项卡中。确保选项卡以.java结尾,因此它被视为“真正的”Java类。

但处理往往会隐藏来自您的访问修饰符之类的东西,所以您最好不要过于担心它。