Hallo Leute, wer kann mir kurz folgendes erklären?
Ich habe mehrere Fragen, aber vielleicht erkläre ich erstmal was ich verstehe:
equals()-Methode ist eine Methode der Oberklasse aller Klassen mit dem Namen Object.
Sie wird hier ab Zeile 7 überschrieben.
In Zeile 8 wird geprüft ob das übergeben Objekt obj, das gleiche ist wie die Instanz von Kunde, die diese Methode aufruft. Falls ja, dann wird true ausgegeben.
In Zeile 9 wird eine bedingte Anweisung erzeugt, falls obj und Kunde von gleichen Typ sind, dann wird in Zeile 10 ein Variable k von Typ Kunde erzeugt, auf die dann obj gecastet wird.
An dieser Stelle verstehe ich nicht genau was damit bewirkt wird, denn man hat doch vorher schon geprüft ob obj vom Typ Kunde ist, warum muss es jetzt nochmals auf Kunde gecastet werden. Bei der Gelegenheit, vielleicht kann mir einer genau erklären was bedeutet es, wenn ich auf ein bestimmten Typ caste?
In Zeile 11 werden nun, mittels Gleichheitsoperator, die beiden Werte, der Variablen von der aufrufenden Instanz und der vergleichenden Instanz, verglichen. Sind sie identisch so wird ture ausgegeben, andernfalls false.
Dann, in Zeile 14, wird, sofern die Bedingung aus der bedingten Anweisung aus Zeile 9 false ist, das ganze an die equals()-Methode der Klasse Object übergeben. Und an dieser Stelle verstehe ich nicht wieso das noch getan werden muss. Denn immerhin haben wir nun als Parameter, ein nicht Kompatiblies Objekt zur Instanz der Klasse Kunde angegeben, wieso geben wir nach else nicht einfach ein return false aus?
Java:
public class Kunde {
private int kundennummer;
private String name;
private String vorname;
private String geschlecht;
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj instanceof Kunde) {
Kunde k = (Kunde) obj;
return kundennummer == k.kundennummer;
}
else
return super.equals(obj);
}
}
Ich habe mehrere Fragen, aber vielleicht erkläre ich erstmal was ich verstehe:
equals()-Methode ist eine Methode der Oberklasse aller Klassen mit dem Namen Object.
Sie wird hier ab Zeile 7 überschrieben.
In Zeile 8 wird geprüft ob das übergeben Objekt obj, das gleiche ist wie die Instanz von Kunde, die diese Methode aufruft. Falls ja, dann wird true ausgegeben.
In Zeile 9 wird eine bedingte Anweisung erzeugt, falls obj und Kunde von gleichen Typ sind, dann wird in Zeile 10 ein Variable k von Typ Kunde erzeugt, auf die dann obj gecastet wird.
An dieser Stelle verstehe ich nicht genau was damit bewirkt wird, denn man hat doch vorher schon geprüft ob obj vom Typ Kunde ist, warum muss es jetzt nochmals auf Kunde gecastet werden. Bei der Gelegenheit, vielleicht kann mir einer genau erklären was bedeutet es, wenn ich auf ein bestimmten Typ caste?
In Zeile 11 werden nun, mittels Gleichheitsoperator, die beiden Werte, der Variablen von der aufrufenden Instanz und der vergleichenden Instanz, verglichen. Sind sie identisch so wird ture ausgegeben, andernfalls false.
Dann, in Zeile 14, wird, sofern die Bedingung aus der bedingten Anweisung aus Zeile 9 false ist, das ganze an die equals()-Methode der Klasse Object übergeben. Und an dieser Stelle verstehe ich nicht wieso das noch getan werden muss. Denn immerhin haben wir nun als Parameter, ein nicht Kompatiblies Objekt zur Instanz der Klasse Kunde angegeben, wieso geben wir nach else nicht einfach ein return false aus?