Ich bin Java-Neuling und komme aus der PHP-Szene. Ich habe Fragen zur OOP in Java.
Ich habe zwei Klassen:
Crab soll also die move()-Methode erben, aber sich langsamer Bewegen (die Eigenschaft moveSpeed überschreiben). Funktioniert so leider nicht - Crab benutzt moveSpeed = 1.
Wenn ich die move()-Methode in Crab hineinkopiere, wird wie gewünscht moveSpeed=0.6 benutzt.
Ich möchte aber die move()-Methode nur einmal implementieren und in allen erbenden Klassen benutzen.
Jemand einen Tipp?
Als Workaround hatte ich die move-Methode in eine dritte Klasse ausgelagert und statisch gemacht:
Allerdings scheitert es daran, dass ich beim Aufruf nicht weiß wie ein Objekt sich selbst übergeben kann. In PHP ist das mit dem Schlüsselwort $this möglich. Gibt es eine Entsprechung in Java?
Vielen Dank
Ich habe zwei Klassen:
Java:
public class Moving
{
public double moveSpeed = 1;
public void move(){
// Hier ist Logik implementiert, die moveSpeed verwendet
}
}
Java:
public class Crab extends Moving
{
public double moveSpeed = 0.6;
}
Crab soll also die move()-Methode erben, aber sich langsamer Bewegen (die Eigenschaft moveSpeed überschreiben). Funktioniert so leider nicht - Crab benutzt moveSpeed = 1.
Wenn ich die move()-Methode in Crab hineinkopiere, wird wie gewünscht moveSpeed=0.6 benutzt.
Ich möchte aber die move()-Methode nur einmal implementieren und in allen erbenden Klassen benutzen.
Jemand einen Tipp?
Als Workaround hatte ich die move-Methode in eine dritte Klasse ausgelagert und statisch gemacht:
Java:
public class MoveUtil
{
public static move(Moving obj){
// Hier ist Logik implementiert, die obj.moveSpeed verwendet
}
}
Allerdings scheitert es daran, dass ich beim Aufruf nicht weiß wie ein Objekt sich selbst übergeben kann. In PHP ist das mit dem Schlüsselwort $this möglich. Gibt es eine Entsprechung in Java?
Vielen Dank