Klassen Hilfe bei BlueJ, Supermario

Hentoxx

Mitglied
Hallo,

Ich muss für ein Projekt ein Supermario spiel "entwickeln" und bräuchte jetzt Hilfe. Der Mario kann eigentlich schon laufen,springen, sterne einsammeln...
Jetzt hänge ich bei dieser Aufgabe und es ist anscheinend irgendetwas in meinem Code falsch... also ich muss ja von WECHSELBILD erben und nur wegen diesem extends funktioniert das nicht... ohne extends lässt es sich übersetzen und mit geht nichts... Hier auch noch der Fehlercode.
 

Anhänge

  • Screenshot_1.png
    Screenshot_1.png
    67,3 KB · Aufrufe: 44
  • Screenshot_2.png
    Screenshot_2.png
    4,8 KB · Aufrufe: 55
  • Screenshot_3.png
    Screenshot_3.png
    8,6 KB · Aufrufe: 44
Java:
public class SPIELFIGUR extends WECHSELBILD
{
        public SPIELFIGUR(int x,int y, String BILD, String BILD1)
        {
           
        }
}
 
Du musst immer den Konstruktor der Elternklasse aufrufen. Wenn du das nicht explizit hinschreibst, dann wird automatisch der Standardkonstruktor aufgerufen, also der Konstruktor ohne Parameter. Der Fehler sagt nun aber aus, dass deine Elternklasse keinen Standardkonstruktor hat, sondern nur einen mit (int, int, String, String).

Lösung:
Java:
public class SPIELFIGUR extends WECHSELBILD {
       public SPIELFIGUR(int x,int y, String BILD, String BILD1) {
           super(x, y, BILD, BILD1);
       }
}
 
Die Fehlermeldung sagt das dein Konstruktor die falsche Anzahl an Argumenten hat.
Du übergibst 4 Werte wie in der Aufgabenstellung gefordert. Die Klasse Wechselbild möchte aber zwei Integer Werte und ein String[] Array mit 2 Werten für die Bilder.

Bin mir aber nicht sicher.
 
Zuletzt bearbeitet:
Nicht zwangsweise, der Elternkonstruktor kann auch eine Variable Argumentenliste besitzen:
Java:
public WECHSELBILD(int x, int y, String... bilder) {
}
In dem Fall würde der Compiler das in ein Array umwandeln und bei den Aufrufen entsprechend auch Arrays zusammenbauen und übergeben.


Falls die Elternklasse aber tatsächlich wie folgt definiert ist:
Java:
public WECHSELBILD(int x, int y, String[] bilder) {
}
Dann muss es tatsächlich so aufgerufen werden:
Java:
public class SPIELFIGUR extends WECHSELBILD {
       public SPIELFIGUR(int x,int y, String BILD, String BILD1){
           super(x, y, new String{BILD, BILD1});
       }
}
 
Du musst immer den Konstruktor der Elternklasse aufrufen. Wenn du das nicht explizit hinschreibst, dann wird automatisch der Standardkonstruktor aufgerufen, also der Konstruktor ohne Parameter. Der Fehler sagt nun aber aus, dass deine Elternklasse keinen Standardkonstruktor hat, sondern nur einen mit (int, int, String, String).
Danke dir! 🙂 hat geklappt
 
Zuletzt bearbeitet von einem Moderator:

Zurück
Oben