Vererbung - Unresolved compilation problem

RagnaroekC

Mitglied
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.

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:
G

Gast2

Gast
Du musst dann den Konstruktor
Code:
public Mensch(int alter, char geschlecht, String name)
explizit aufrufen. Aussehen könnte das ganze dann so:
Java:
Student (int alter, char geschlecht, String name, String Matrikelnummer) {
  super(alter, geschlecht, name);
  setMatrikelnummer(matrikelnummer);
}
 

RagnaroekC

Mitglied
Danke, ich habe wohl alles ausprobiert außer diese Variante. ^^

Eine kleine Frage vielleicht noch:

Wenn wir keinen Standard-Konstruktor in der Oberklasse anbieten, müssen wir in der Unterklasse mittels super(Argument ...) einen speziellen, parametrisierten Konstruktor aufrufen.

Warum?

Ich meine, nur weil die Java-Macher sich das so ausgedacht haben, dass man einen Konstruktor aufrufen muss oder steckt da irgend ein tierferer Sinn hinter?
 
Zuletzt bearbeitet:

xehpuk

Top Contributor
Kleiner Auszug aus Using the Keyword super (The Java™ Tutorials > Learning the Java Language > Interfaces and Inheritance):

Note:

If a constructor does not explicitly invoke a superclass constructor, the Java compiler automatically inserts a call to the no-argument constructor of the superclass. If the super class does not have a no-argument constructor, you will get a compile-time error.
Code:
Object
does have such a constructor, so if
Code:
Object
is the only superclass, there is no problem.

--------------------------------------------------------------------------------

If a subclass constructor invokes a constructor of its superclass, either explicitly or implicitly, you might think that there will be a whole chain of constructors called, all the way back to the constructor of
Code:
Object
. In fact, this is the case. It is called constructor chaining, and you need to be aware of it when there is a long line of class descent.
Bevor eine Instanz einer Unterklasse erzeugt werden kann, muss alles aus den Oberklassen initialisiert werden. Die Unterklasse will schließlich das Verhalten erben.
Deshalb wird die Klassenhierarchie aufwärts über Konstruktor-Aufrufe durchlaufen. Um dies sicherzustellen, fügt der Compiler ein
Code:
super()
in die Konstruktoren der Unterklasse ein, wenn diese keinen expliziten
Code:
super()
- oder
Code:
this()
-Aufruf haben. Hat die Oberklasse dann nicht den Standardkonstruktor, schlägt die Kompilierung fehl.

Als Ergänzung ist hier wohl auch eine Erklärung von
Code:
this()
angebracht: Using the this Keyword (The Java™ Tutorials > Learning the Java Language > Classes and Objects)
Kurz: Ruft einen anderen Konstruktor derselben Klasse auf.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
1 Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
B Vererbung Java Basics - Anfänger-Themen 12
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
C Vererbung Java Basics - Anfänger-Themen 4
L Vererbung Java Basics - Anfänger-Themen 3
J Klassenorganisation | Vererbung Java Basics - Anfänger-Themen 1
B Vererbung Vererbung Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
A Benötige Hilfe bei Vererbung Java Basics - Anfänger-Themen 1
M Anfängerprobleme mit Vererbung Java Basics - Anfänger-Themen 27
J Vererbung Java Basics - Anfänger-Themen 9
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben