Ich code auf Verarbeitung für ein paar Monate jetzt und ich versuche, Java-Klassen zu verwenden. Ich bin ein Neuling auf Java-Klassen und ich glaube, dass private Attribute einer Klasse nicht außerhalb dieser Klasse geändert werden können. Allerdings habe ich ein privates Attribut eines Objekts in setup()
void von Processing geändert. Ich verstehe nicht, warum ich das kann. Kann mir jemand helfen?Warum kann ich ein privates Attribut außerhalb seiner Klasse ändern?
Ein Teil des Klassencode:
public class Character {
private String name;
...
public Character(String pName, ...) {
name = pName;
...
public void dname() {
println(this.name);
}
}
Der setup()
Code:
void setup() {
player = new Character("John Doe", ...);
player.dname(); //I get "John Doe".
player.name = "tara";
player.dname(); //I get "tara", without any error.
}
Thank you very much!
** Wo befindet sich der Setup-Code? Das ist der Schlüssel. Befindet es sich in der gleichen Datei wie die Zeichenklasse? –
@HovercraftFullOfEels Nein, das Setup befindet sich in der Hauptdatei, während sich die Zeichenklasse in einer Datei befindet, in der alle Klassen definiert sind. Wie wirkt sich das auf den öffentlich-privaten Mechanismus aus? – hiberfil
@hiberfil Ich habe noch nie mit der Verarbeitung gearbeitet, aber mit Bezug auf [diese Dokumentation] (https://processing.org/reference/private.html): "Dieses Schlüsselwort wird verwendet **, um anderen Klassen ** den Zugriff auf die Felder und zu verbieten Methoden innerhalb einer Klasse "(Hervorhebung meins). Das mag frei formuliert sein, aber wie gesagt, wenn Ihre 'setup()' - Methode nicht in einer Klasse ist, bedeutet dies, dass 'private' ignoriert wird. –