ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
565
565
EMPFEHLEN
-
09.10.10 14:06 #1Data1992 Tutorials.de Gastzugang
Hallo zusammen,
wahrscheinlich ist die Antwort auf meine Frage ziemlich banal, aber ich sehe den Wald vor lauter Bäumen nicht.
Wir haben in unserer Vorlesung eine Klasse "Coord" definiert:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
class Coord { private int x; private int y; public Coord(int x, int y) { this.x = x; this.y = y; } public equals(Object value) { return x == ((Coord) value).x & y == ((Coord) value).y; } }
Diese Klasse wird in einem Programm verwendet. Beim folgenden Aufruf funktioniert die Überprüfung der Strukturgleichheit wunderbar:
Code :1 2
Coord c1 = new Coord(17,20); if(c1.equals(new Coord(17,20)) System.out.println("c1 == (17,20)");
Allerdings kann ich nicht ganz nachvollziehen, warum die equals()-Methode des Coord-Objektes auf die privaten Membervariablen einer anderen Instanz dieser Klasse zugreifen kann.
Kann mich da mal jemand aufklären, was es damit auf sich hat?
Mit freundlichen Grüßen
Data
-
Das ist einfach die Semantik von private. Siehe z.B. auch Privat ist nicht ganz privat: Es kommt darauf an, wer’s sieht in der Java-Insel.
Grüße,
Matthias„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
09.10.10 21:24 #3Data1992 Tutorials.de Gastzugang
Hallo Matthias,
vielen Dank! Auf sowas wäre ich nie im Leben gekommen. Gut, dass uns unser Professor sowas verschwiegen hat... :-|
Gruss
Data
-
18.10.10 09:28 #4
- Registriert seit
- Aug 2005
- Ort
- Karlsruhe (Baden-Württemberg)
- Beiträge
- 905
Jedoch ist die equals Methode inhaltlich falsch.
Das Object value wird nicht auf null bzw. auf Coord geprüft, um dann false zurückzugeben. Daher würde dabei eine NullPointerException/ClassCastException fliegen, was nach der Spezifikation zu equals() nicht erlaubt ist. Siehe auch die API von Object dazu.
Z.B.
Des Weiteren fehlt die hashCode Methode wodurch automatisch, der Vetrag zur hashCode Methode gebrochen wurde. Normalerweise überschreibt man immer beide Methoden.Code java:1 2 3
if (!(value instanceOf Coord)) { return false; }
Wäre super wenn ihr euren Code in dieser Form einfügt:
[java]System.out.println("Hello World");[/java]Code java:1
System.out.println("Hello World");
Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
Blog: http://javaeffective.wordpress.com/
-
-
Ähnliche Themen
-
Compilerfehler C2248: Kein Zugriff auf private Member
Von $nooc im Forum C/C++Antworten: 0Letzter Beitrag: 18.03.10, 20:36 -
Zugriff auf private-attribut
Von Cherry07 im Forum Java GrundlagenAntworten: 10Letzter Beitrag: 27.04.08, 13:18 -
Zugriff auf Membervariable [ 2 ]
Von Geflügel im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 06.09.07, 14:27 -
Zugriff auf Membervariable
Von Geflügel im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 06.09.07, 14:03 -
Vererbung: Problem beim Zugriff auf Private Attribute
Von BugSeeker im Forum C/C++Antworten: 5Letzter Beitrag: 02.05.04, 21:02





Zitieren


Login





