Vererbung Array aus Basisklasse bilden?

StephanL

Mitglied
Hallo,

ich bin derzeit dabei mich in AWT und Swing einzuarbeiten und versuche mich dazu an einem kleinen Spiel. Probleme habe ich jedoch gerade an anderer Stelle, bei der Umsetzung des Spielfeldes. Und zwar möchte ich unterschiedliche Leveldateien in Textform gestalten, etwa in der Form:

Code:
0=Gang
1=Mauer
2=Tür

0010
1210
0010
0000

Ich denke, das Prinzip ist klar 🙂 Jedenfalls möchte ich ein zweidimensionales Array KartenElement[][] erstellen, in dem die Informationen, worum es sich jeweils handelt, abgespeichert werden. KartenElement soll dabei eine Basisklasse sein und es soll abgeleitete Klassen Gang, Mauer und Tuer geben, da diese sich kaum voneinander unterscheiden (abgesehen von der hinterlegten Grafik, Passierbarkeit etc.).

Wenn ich nun aber ein Array der Basisklasse anlege, wie kann ich darin Objekte der abgeleiteten Klassen speichern? Geht das überhaupt, oder kann ich meine Idee in der Form verwerfen?

Gruß
Stephan
 
Das was du machen willst nennt man Polymorphie, klar geht das!

Java:
//KartenElement abstrakte Superklasse
//Door,Mauer erben von KartenElement

KartenElement[] elemente=new KartenElement[10];

elemente[0]=new Door();
elemente[1]=new Mauer();

if(elemente[0] instanceof Door)
{
//Element 0 ist eine Tür!
}

Wenn du aus einem expliziten KartenEelement wieder eine Tür oder anderes machen willst, musst du einfach nur richtig casten 🙂
 
Hi, ich hätte dazu auch noch eine Frage:

zu dem Beispielcode von BRoll...
Java:
//KartenElement abstrakte Superklasse
//Door,Mauer erben von KartenElement
 
KartenElement[] elemente=new KartenElement[10];
 
elemente[0]=new Door();
elemente[1]=new Mauer();
 
if(elemente[0] instanceof Door)
{
//Element 0 ist eine Tür!
}

..jetzt z.B. eine abstrakte Methode "untersuchen" in der Klasse KartenElement anlege und diese dann unterschiedlich für Door u. Mauer definiere, würden die folgenden methodenaufrufe in dem Sinne funktionieren, dass auch tatsächlich für Door bzw. Mauer die jeweilige Methode aufgerufen wird?

Java:
elemente[0].untersuchen(); //entpricht Door.untersuchen()? 
elemente[1].untersuchen(); //entspricht Mauer.untersuchen()?
 
Zuletzt bearbeitet:

Zurück
Oben