Ich habe eine Aufgabe über Vererbung, bei der ich zum einen eine Superklasse 'Mario' definieren soll, von der dann 2 Subklassen erben (SuperMario, PinguinMario)
Teils unterschiedliche Funktionen bzw. Funktion für eine Subklasse nicht erlaubt - Methode überschreiben in der Subklasse hilft.
Das passt soweit auch.
Jetzt muss ich eine weitere Subklasse hinzufügen:
Ist die Idee soweit gut, dass in der Superklasse zu machen, oder sollte ich das mit dem Konstruktor für FlugMario lieber in der Subklasse FlugMario machen?
Zweites Problem:
Eine neue Superklasse 'AbstrakterGegenstand' und 3 Subklassen (RoterPilz, GruenerPilz, Panzer) sind soweit klar. Die neue Superklasse kann ich ja auch 'abstrakt' machen, da es ja keinen Sinn macht, davon ein Objekt zu erzeugen.
Nur wie übergebe ich 'AbstrakterGegenstand' als Parameter? Dass wäre dann ja sowas wie
Das sieht aber ehrlich gesagt nicht so wirklich sinnvoll oder logisch aus. Und wie änder ich den Zustand der Marioinstanzen, wenn z.B. SuperMario einen roten Pilz sammelt. Müsste ja eigentlich mit set-Methode machbar sein, aber wie greife ich auf die set-Methode der SuperMario-Instanz zu?
Und ist die Überlegung auch richtig oder hab ich da einen Denkfehler?
Und dann noch zu den Subklassen GruenerPilz, RoterPilz, Panzer - wie mach ich das? Mir fehlt da irgendwie der komplette Ansatz.
Überlegung meinerseits war, dass ich in bei der sammelGegenstand()-Methode ja ein Item übergeben muss, das Item hat ja dazu noch Auswirkungen auf meine Marioinstanz.
Zusätzlich verstehe ich die Aufgabenstellung so, dass ich die Änderung der Marioinstanz in der Subklasse der Items machen soll. Bloss wie?
Wäre nett wenn jemand Tipps für mich hat, Vererbung ist wohl doch nicht so leicht wie ich dachte :rtfm:.
Teils unterschiedliche Funktionen bzw. Funktion für eine Subklasse nicht erlaubt - Methode überschreiben in der Subklasse hilft.
Das passt soweit auch.
Jetzt muss ich eine weitere Subklasse hinzufügen:
Wie löse ich das am besten mit dem Konstruktor? Beim erzeugen einer FlugMario-Instanz muss ja die Flugzeit mitgegeben werden, ich dachte an einen extra Konstruktor in der Superklasse.Sie wollen Ihr bestehendes Programm nun um FlugMario erweitern. Allerdings kann FlugMario nicht
– wie die bisherigen Formen – normal springen, sondern stattdessen eine kurze Zeit fliegen. Führen
Sie dazu eine abstrakte Klasse AbstrakterMario ein, von der alle drei konkreten Mario Klassen erben.
Überlegen Sie sich genau, welche Variablen und Methoden Sie in AbstrakterMario schreiben, und
welche Methoden davon abstrakt sein sollten.
Java:
public AbstrakterMario(boolean gross, int anzahlLeben) {
this.gross = gross;
this.anzahlLeben = anzahlLeben;
}
public AbstrakterMario(boolean gross, int anzahlLeben, int flugDauer) {
this.gross = gross;
this.anzahlLeben = anzahlLeben;
this.flugDauer = flugDauer;
}
Zweites Problem:
Hier bin ich mir unsicher, was genau gemeint ist und wie ich das lösen soll.Zusätzlich soll Mario folgende Gegenstände einsammeln können. Fügen Sie den entsprechenden Code in die „Gegenstände sammeln“-Funktion Ihres Mario ein.
Als Parameter übergeben Sie einen AbstraktenGegenstand, die zu implementierenden Unterklassen sind die folgenden. Zusätzlich ändern Sie hier den Zustand innerhalb der jeweiligen Marioinstanz:
„roter Pilz“ : Der rote Pilz macht Mario groß.
„grüner Pilz“ : Mario bekommt ein Leben.
„Panzer“ : Mario kann bis zu 3 Panzer sammeln, die er schmeißen kann.
Eine neue Superklasse 'AbstrakterGegenstand' und 3 Subklassen (RoterPilz, GruenerPilz, Panzer) sind soweit klar. Die neue Superklasse kann ich ja auch 'abstrakt' machen, da es ja keinen Sinn macht, davon ein Objekt zu erzeugen.
Nur wie übergebe ich 'AbstrakterGegenstand' als Parameter? Dass wäre dann ja sowas wie
Java:
public void sammelGegenstand(AbstrakterGegenstand item) {
}
Und ist die Überlegung auch richtig oder hab ich da einen Denkfehler?
Und dann noch zu den Subklassen GruenerPilz, RoterPilz, Panzer - wie mach ich das? Mir fehlt da irgendwie der komplette Ansatz.
Überlegung meinerseits war, dass ich in bei der sammelGegenstand()-Methode ja ein Item übergeben muss, das Item hat ja dazu noch Auswirkungen auf meine Marioinstanz.
Zusätzlich verstehe ich die Aufgabenstellung so, dass ich die Änderung der Marioinstanz in der Subklasse der Items machen soll. Bloss wie?
Wäre nett wenn jemand Tipps für mich hat, Vererbung ist wohl doch nicht so leicht wie ich dachte :rtfm:.