2016-05-26 3 views
0

Ich bin ein wenig verwirrt mit meinen Konstruktor-Konzepte in Java. Im obigen Beispielcode habe ich einen Cart-Konstruktor deklariert, der ein Argument als Cart hat (das sich auf ein anderes Cart-Objekt beziehen kann). Wie wir in der Beispielklasse sehen können, sind alle Instanzvariablen privat. Wie kann ich direkt über die Referenz sessionCart auf die privaten Variablen der Cart-Klasse zugreifen? Idealerweise sollte ich das nicht können.Unterschied zwischen dem Zugriff von privaten Instanzvariablen in derselben Klasse und in verschiedenen Klassen

Bitte helfen.

+1

das sind, warum eine Anwendung öffentliche Getter-Methoden – emotionlessbananas

+0

oder Sie Reflexion versuchen können, aber nicht zu empfehlen lol – emotionlessbananas

Antwort

2

Der Zugriffsbereich nicht zu bezieht sich „das Objekt greift auf den Wert dessen, was andere Objekt“, sondern auf „welcher Code (aus der Klasse) greift auf Elemente (Objekte) einer bestimmten Klasse“

In Ihrem Fall kann der Konstruktor direkt auf diese Variablen zugreifen, da die Klasse des an den Konstruktor übergebenen Objekts dieselbe ist. Das heißt, es ist der Code der Klasse selbst, der darauf zugreift. Auf dieser Grundlage ist ein privater Zugang möglich. Mit anderen Worten, es ist die Cart Klasse, die auf private Felder von der Cart-Klasse zugreift (wie beispielsweise this.id).

Und BTW, es ist nicht nur der Konstruktor, der dieses Privileg hat, kann jeder Code in der Cart Klasse das gleiche tun.

prüfen Weitere Informationen zu dieser Dokumentation Seite: https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

+0

Danke Ernest für die klare Erklärung. Konzept ist jetzt klar: D – malviyarahuljayendra

2

private Zugriffsmodifikator ermöglicht den Zugriff auf beliebigen Code in derselben Klasse, die das Element private enthält, unabhängig davon, ob der Zugriff auf ein Mitglied der aktuellen Instanz oder einer anderen Instanz erfolgt.

Dadurch können Methoden wie compareTo und clone sowie Kopierkonstruktoren auf private Felder einer anderen Instanz der gleichen Klasse zugreifen.

+0

Dank Eran, für die Antwort. – malviyarahuljayendra

Verwandte Themen