Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Implicit super constructor Mensch() is undefined. Must explicitly invoke another constructor...
Hey ihr, lese nun seit geraumer Zeit im google. Kann mein Problem dennoch nicht beheben.
Die Klasse Mensch soll beerbt werden.
und zwar durch die Klasse Student
Außerdem soll um die Matrikelnummer erweitert werden. Habe sie hier erst einmal auskommentiert, da bereits alles ohne diese schon nicht funktioniert.
Die Sache ist nun die, ich weiß, dass automatisch ein Standartkonstruktor initialisiert muss, welchen man mindestens aufrufen muss, da sonst diese Fehlermeldung erscheint. Vermutlich weil man ja vererben möchte und das ganze sonst keinen Sinn ergibt. Ich habe gelesen, dass man deshalb alternativ auch einen anderen Konstruktor der Superklasse aufrufen kann, wodurch die Superklasse dann genutzt wird. Dieses versuchte ich, allerdings ohne Erfolg.
Ich hoffe ihr könnt mir erläutern warum dies gerade nicht funktioniert und wie man es abändern kann, damit es funktioniert.
Liebe Grüße
Ragnaroek
P.s.: Ich weiß, dass das Problem behoben ist, wenn man einen Standartkonstruktor in der Superklasse initialisiert. Also in dem Fall
Mensch()
{
}
da dieser dann erreichbar ist. Allerdings darf die Superklasse natürlich nicht verändert werden.
Implicit super constructor Mensch() is undefined. Must explicitly invoke another constructor...
Hey ihr, lese nun seit geraumer Zeit im google. Kann mein Problem dennoch nicht beheben.
Die Klasse Mensch soll beerbt werden.
Java:
class Mensch {
private int alter;
private char geschlecht;
private String name;
public Mensch(int alter, char geschlecht, String name) {
setAlter(alter);
setGeschlecht(geschlecht);
setName(name);
}
public int getAlter() {
return alter;
}
void setAlter(int alter) {
this.alter = alter;
}
public char getGeschlecht() {
return geschlecht;
}
void setGeschlecht(char geschlecht) {
this.geschlecht = geschlecht;
}
public String getName() {
return name;
}
void setName(String name) {
this.name = name;
}
public String getTyp() {
String typ = "Mensch";
return typ;
}
}
und zwar durch die Klasse Student
Java:
//Die Klasse Student erweitert die Klasse Mensch, wodurch sie
//alle Attribute unter Berücksichtigung der Sichtbarkeit erbt.
public class Student extends Mensch {
// Die Klasse Student erweitert die Klasse Mensch und folgende Attribute:
private String Martrikelnummer = "";
private String s = "Student";
// ... und Methoden
public void setMatrikelnummer(String Martrikelnummer)
{
this.Martrikelnummer = Martrikelnummer;
}
public String getMatrikelnummer()
{
return Martrikelnummer;
}
public String getTyp()
{
return s;
}
//... sowie diesem Konstruktor
//HIER IRGENDWO LIEGT DER FEHLER
Student(int alter, char geschlecht, String name) //, String Matrikelnummer)
{
// Die Attribute der Klasse Mensch sind durch die Vererbung hier nutzbar.
setAlter(alter);
setGeschlecht(geschlecht);
setName(name);
//setMatrikelnummer(Matrikelnummer);
}
}
Außerdem soll um die Matrikelnummer erweitert werden. Habe sie hier erst einmal auskommentiert, da bereits alles ohne diese schon nicht funktioniert.
Die Sache ist nun die, ich weiß, dass automatisch ein Standartkonstruktor initialisiert muss, welchen man mindestens aufrufen muss, da sonst diese Fehlermeldung erscheint. Vermutlich weil man ja vererben möchte und das ganze sonst keinen Sinn ergibt. Ich habe gelesen, dass man deshalb alternativ auch einen anderen Konstruktor der Superklasse aufrufen kann, wodurch die Superklasse dann genutzt wird. Dieses versuchte ich, allerdings ohne Erfolg.
Ich hoffe ihr könnt mir erläutern warum dies gerade nicht funktioniert und wie man es abändern kann, damit es funktioniert.
Liebe Grüße
Ragnaroek
P.s.: Ich weiß, dass das Problem behoben ist, wenn man einen Standartkonstruktor in der Superklasse initialisiert. Also in dem Fall
Mensch()
{
}
da dieser dann erreichbar ist. Allerdings darf die Superklasse natürlich nicht verändert werden.
Zuletzt bearbeitet: