Guten Tag,
was ich nicht verstehe:
Es heißt doch immer, bei der Vererbung werden alle Methoden und Attribute der Superklasse vererbt. Soweit klar, sinnvoll und toll!
Aber bei Konstruktoren ist das offensichtlich nicht so. Zwar: wenn die Superklasse einen parameterlosen Konstruktor hat, dann wird der auch bei der Erzeugung eines Objekts der abgeleiteten Klasse aufgerufen.
Hat die Superklasse aber einen Konstruktor mit Parametern, kann man diesen nicht ohne weiteres zur Erzeugung eines Objekts der abgeleiteten Klasse verwenden. Man muß offenbar in der Implementierung der abgeleiteten Klasse schreiben:
Frage 1: Das erscheint mir als Anfänger etwas umständlich. Wäre es nicht einfacher, wenn auch Konstruktoren mit Parametern vererbt werden würden? (EDIT: wenn ich zB zu einer bestehenden Klasse einfach nur eine Methode hinzufügen möchte) Da aber die Java-Entwickler nicht auf den Kopf gefallen sind, muß ein Sinn dahinter stecken. Kann mir den jemand verraten?!
Frage 2: Wen ich in der abgeleiteten Klasse den Konstruktor mit Parametern auf oben genannte Weise implementiert habe, funktoniert der parameterlose Konstruktor nicht mehr "automatisch", ich muß ihn ebenfalls mit Verweis auf den der Superklasse implementieren. EDIT: Warum?
Ich hofe mich einigermaßen verständlich ausgedrückt zu haben (kann gerne Beispielcode posten falls etwas unklar ist). Vlt.ist es heute auch einfach zu warm zum Programmieren!
Danke, Gruß nossek
was ich nicht verstehe:
Es heißt doch immer, bei der Vererbung werden alle Methoden und Attribute der Superklasse vererbt. Soweit klar, sinnvoll und toll!
Aber bei Konstruktoren ist das offensichtlich nicht so. Zwar: wenn die Superklasse einen parameterlosen Konstruktor hat, dann wird der auch bei der Erzeugung eines Objekts der abgeleiteten Klasse aufgerufen.
Hat die Superklasse aber einen Konstruktor mit Parametern, kann man diesen nicht ohne weiteres zur Erzeugung eines Objekts der abgeleiteten Klasse verwenden. Man muß offenbar in der Implementierung der abgeleiteten Klasse schreiben:
Java:
public AbgeleiteteKlasse(parameter){
super(parameter);
}
Frage 1: Das erscheint mir als Anfänger etwas umständlich. Wäre es nicht einfacher, wenn auch Konstruktoren mit Parametern vererbt werden würden? (EDIT: wenn ich zB zu einer bestehenden Klasse einfach nur eine Methode hinzufügen möchte) Da aber die Java-Entwickler nicht auf den Kopf gefallen sind, muß ein Sinn dahinter stecken. Kann mir den jemand verraten?!
Frage 2: Wen ich in der abgeleiteten Klasse den Konstruktor mit Parametern auf oben genannte Weise implementiert habe, funktoniert der parameterlose Konstruktor nicht mehr "automatisch", ich muß ihn ebenfalls mit Verweis auf den der Superklasse implementieren. EDIT: Warum?
Ich hofe mich einigermaßen verständlich ausgedrückt zu haben (kann gerne Beispielcode posten falls etwas unklar ist). Vlt.ist es heute auch einfach zu warm zum Programmieren!
Danke, Gruß nossek
Zuletzt bearbeitet: