Frage von bishare, 92

2 Objekte gleicher Name?

Habe 2 Objekte:

Feind1 Objekt1 = new Feind1 (1);

Feind2 Objekt2 = new Feind2 (2);

Im Programm kämpft man jetzt gegen einen Feinden, der zufällig ausgewählt wird. Jetzt ist das Problem, dass ich den kompletten Kampfablauf beider Objekte exakt gleich aufschreiben muss.

Also:

if(Auswahl== 1) { Objekt1.Kampf(); }

else {Objekt2.Kampf(); }

Kann ich irgendwie Feind1 und Feind2 gleich benennen? Also sowas wie:

Feind1 Objekt1....

Feind2 Objekt1....

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von NoHumanBeing, 64

Stecke sie in ein Array.

Feind[] feinde = new Feind[2];

for (int i = 0; i < feinde.length; i++)
feinde[i] = new Feind(i + 1);

for (int i = 0; i < feinde.length; i++)
   feinde[i].kaempfe();


Für mehr Feinde musst Du nur die oberste 2 ändern. Der Rest ist generisch.

Kommentar von rmnstr ,

Das funktioniert natürlich nur, wenn "Feind1" und "Feind2" von der Klasse "Feind" erben oder das Interface "Feind" implementieren.

Kommentar von NoHumanBeing ,

Ja, genau. Wäre ja aber in diesem Fall durchaus sinnvoll, da ja beide gemeinsame Eigenschaften besitzen. Sie können ja offenbar beide kämpfen. ;-)

Kommentar von bishare ,

Wie kann ich die Werte dann auslesen? mit einer Getter Methode geht es anscheinend nicht :/

Kommentar von bishare ,

ach vergiss es xd hab es jetzt hinbekommen...vielen dank :) 

Kommentar von NoHumanBeing ,

Super! Keine Ursache! :-)

Kommentar von NoHumanBeing ,

feinde[i], mit i als Index zwischen 0 und (feinde.length - 1), jeweils einschließlich, ist wieder vom Typ Feind und unterstützt damit Deine Methoden.

feinde hingegen ist vom Typ Feind[], was nicht das selbe ist, wie Feind. ;-)

Kommentar von bishare ,

Vielen Dank, genau das war der Fehler xD

Kommentar von bishare ,

Zum Glück gibt es die Erinnerungsfunktion xP Danke nochmals

Kommentar von NoHumanBeing ,

Keine Ursache! :-)

Antwort
von rmnstr, 55

Dann könntest du ja nicht mehr angeben, welches Objekt nun aufgerufen werden soll.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten