[Java] Zugriffsbeschränkungen für private Felder gelten nicht pro Objekt, sondern pro Klasse

Sprechen Sie über Java-Spezifikationen.

In der Java-Dokumentation heißt es:

The private modifier specifies that the member can only be accessed in its own class.

https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

Das heißt, es kann von verschiedenen Objekten aus zugegriffen werden, die zur selben Klasse gehören. (Der Teil, der leicht zu missverstehen ist)

Beispiel 1

Indem Sie ein Objekt derselben Klasse als Argument empfangen, können Sie das private Feld direkt bedienen. (Getter, Setter nicht erforderlich)

public class Foo {
    private int num;

    public void setNumToAnotherFoo(Foo foo, int num) {
        foo.num = num;
    }
}

Beispiel 2

Wenn ein Feld Objekte derselben Klasse enthält, kann das private Feld direkt bearbeitet werden.


public class Bar {
    private Bar barField;
    private int num;

    public void setBarFieldNum(int num) {
        barField.num = num;
    }
}

Verweise

Recommended Posts

[Java] Zugriffsbeschränkungen für private Felder gelten nicht pro Objekt, sondern pro Klasse
[Java] Objektklasse
Feld für den Java-Klassentyp
[Java] Wrapper, der die private Methode eines Objekts von außerhalb der Klasse ausführt
Warum werden Klassenvariablen benötigt? [Java]
Java (Klassentyp für Feld verwenden)