Schrödinger programmiert Java - Das etwas andere Fachbuch
Schrödinger programmiert Java - Das etwas andere Fachbuch
Schrödinger programmiert Java - Das etwas andere Fachbuch
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Auf den Spuren der<br />
Objektgleichheit<br />
Ja, aber sicherlich erinnerst du dich daran, dass du die equals()-Methode für<br />
deine Klassen selber implementieren musst. Die geerbte Methode aus Object<br />
prüft nämlich nur die Speicheradresse. Du musst die Methode überschreiben!<br />
Und da wir zwei, <strong>Schrödinger</strong>, nicht den Schuh-Kennerblick haben wie deine Freundin,<br />
sind für uns jetzt erstmal alle Schuhe gleich, die die gleiche Größe und die gleiche<br />
Farbe haben und die entweder Stöckel haben oder keine.<br />
[Schwierige ige Aufgabe]<br />
Probieren ren geht über studieren! Probiere<br />
es selbst: st: Erstelle eine korrekte Imple-<br />
mentierung erung von equals() für die<br />
Klasse Schu uhPaar, so dass der<br />
Schuhtester korrekt funktioniert.<br />
Hier siehst du, wie du es machen könntest:<br />
@Override*2<br />
public boolean equals(Object object){ *1<br />
boolean gleich = false;<br />
if(object != null && object instanceof SchuhPaar) {<br />
SchuhPaar schuhPaar = (SchuhPaar) object;<br />
gleich*5 = schuhPaar.getFarbe().equals(this.getFarbe()) *3<br />
&& schuhPaar.getGroesse() == this.getGroesse() *4<br />
&& schuhPaar.isMitStoeckeln() == this.isMitStoeckeln(); *4<br />
}<br />
return gleich;<br />
}<br />
*1 Der Parameter für die<br />
equals()-Methode ist<br />
immer Object, nicht etwa –<br />
wie man meinen könnte –<br />
SchuhPaar. Ganz wichtig,<br />
denn sonst überschreibst<br />
du nicht, wie geplant,<br />
sondern überlädst die<br />
Methode nur.<br />
*2 Anhand der @Override-<br />
Annotation erkennt der Compiler, dass du<br />
überschreiben möchtest. Würdest du<br />
statt Object die Klasse SchuhPaar<br />
in der Methodendeklaration verwenden,<br />
würde der Compiler aufschreien.<br />
*4 Die Schuhgröße und die Angabe, ob die<br />
Schuhe Stöckel haben, sind beides primitive<br />
Datentypen, und die werden nach wie vor mit dem<br />
==-Operator verglichen.<br />
*3 Die Farbe ist als String implementiert,<br />
und die Klasse String hat eine<br />
eigene equals()-Methode, die<br />
bereits korrekt funktioniert. Die kannst du<br />
ruhigen Gewissens verwenden.<br />
*5 Nur wenn alle drei<br />
Eigenschaften gleich sind, ist<br />
gleich true.<br />
314 Kapitel ACHT