Hallo, ich habe hier ein Beispiel vom Buch Java ist auch eine Insel (S.507). Es geht um abstrakt Klassen und Methoden. Ich habe hier einen Code Teil, wo ich nicht verstehe warum ich zb in der Klasse Key meine Instanzvariable in der überschriebenen Methode nicht mit this.id referenziere und nur id schreibe? Und weshalb muss ich die Klasse Door casten? Und wieso brauche ich bei return false keinen else Fall?
Danke schon mal!
Danke schon mal!
Java:
public class Key extends GameObject {
//speicher ebenfalls eine id
int id;
public Key(int id) {
this.id = id;
}
//überschreibe useOn
//als erstes wird geprüft ob der Schlüssel
//auf eine Türe angewedet wird
//wenn ja, dann muss id key und id door übereinstimmen
//wenn das alles war dann wird isOpen wahr
//und die Methode liefert true
public boolean useOn(GameObject object) {
if (object instanceof Door) {
if (id == ((Door) object).id)
return ((Door) object).isOpen = true;
}
return false;
}
}
Java:
public class Door extends GameObject {
//eine tür hat für den Schlüssel eine id
//den nicht jeder Schlüssel passt auf jedes Schloss
int id;
boolean isOpen;
public Door(int id){
this.id = id;
}
//die unterklasse door soll die abstrakte Methode useOn
//überschreiben, aber immer false zurück gebe
//da sich eine Tür in diesem Szenario
//auf nichts anwenden lässst
public boolean useOn(GameObject object){
return false;
}
}