Methoden Auf Methode der Unterklasse zugreifen?

selina55555

Mitglied
Hallo,

ich bin momentan dabei ein Spiel mit Java zu erstellen. Ich möchte die Methode "eat" hinzufügen. Dabei soll überprüft werden, ob der Spieler den Gegenstand in seinem Rucksack besitzt. Trifft dies zu und er ist von der Unterklasse Blume, soll der Gegenstand gegessen werden können. Das Problem ist nun, dass ich die Methode getKraft() nicht verwenden kann, da diese nur in der Unterklasse verfügbar ist.
Wie kann ich dieses Problem bestmöglich beheben?

Java:
public void eat(Befehl befehl)
    {
        Iterator<Gegenstand> it = rucksack.iterator();
        while(it.hasNext()) {
            Gegenstand loeschen = it.next();
            if(loeschen.getSuchbegriff().equals(befehl.gibZweitesWort()) && loeschen instanceof Blume){
                tragkraft += loeschen.getKraft() ;  //Kraft addieren
                System.out.println("Du hast das Objekt '" + loeschen.getName() + "' gegessen.\nDeine Tragkrafte beträgt nun " + tragkraft + " Gramm.");
                it.remove();
                rucksackWiegenPrint();
                rucksackFreiPrint();
                return;
            }
        }
        System.out.println("Das hat nicht geklappt. Das Objekt befindet sich nicht in deinem Rucksack oder ist nicht essbar.");
 
Zuletzt bearbeitet von einem Moderator:
Ich finde das deutet auf ein Designproblem hin. Der Down-Cast ist die einfachste Möglichkeit aber nicht die beste. Du solltest Kraft verallgemeinern und eine Ebene nach oben ziehen (in den Gegenstand) per Vererbung oder Interface. Bspw. könnte jeder Gegenstand positive und negative "Einflüsse" (eine mögliche Verallgemeinerung von Kraf) haben. Dann iterierst du über die Einflüsse, die ggf./meist leer sein können. Ein Einfluss hat z.B. eine apply-Funktion, die den Spieler übergeben bekommt und die gewünschten Änderungen vornimmt.
 

Neue Themen


Zurück
Oben