Papaklasse macht Zicken mit Parameterkonstruktor

  • Themenstarter Themenstarter NasenHase
  • Beginndatum Beginndatum
N

NasenHase

Gast
Ein Klasse, die von einer anderen hergleitet wurde (class Sohn extends Papa) nutzt ja automatisch den parameterlosen Konstruktor von Papa. Hat keiner einen Konstruktor oder nur der Sohn einen Konstruktur (oder mehrere) ist alles ok.
Wenn Papa aber plötzlich NUR einen Konstruktor mit Parameter hat, dann gibt es einen Fehler, egal ob der Sohn keinen oder sogar mehrere Konstruktoren hat.

Blöde Frage: WARUM????

Danke fürs Aushalten meiner Dummheit!
 
Das liegt am impliziten aufruf von super()

Ansonsten bitte Code; + Fehlermeldung + Siehe meine Signatur.
 
wenn sohn kein
Code:
super()
explizit aufruft, ruft er automatisch
Code:
super()
auf.
hat papa einen parametisierten konstruktor, bekommt er von java nicht mehr autoamtische einen parameterlosen konstruktor.
da
Code:
super()
aber den parameterlosen konstruktor aufrufen will, gibt es einen fehler.

umgehen kannst du das indem du entweder papa einen parameterlosen kosntruktor gibst oder dem sohn im konstruktor ein
Code:
super(parameterDenPapaBrauch)
aufrufst.
 
Sorry. Ich dachte meine Frage wäre für andere so banal, dass ein Beispiel nicht lohnt.

Java:
public class papa(){

 papa(String wert){
  //mach was mit wert
 }

}

public class sohn extends papa(){
 sohn(){
  //egal
 }

 sohn(String wert){
  //auch egal
 }
}

Das knallt. Entweder mache ich Papas Konstruktor parameterlos oder ich muss offenbar mit super(wert) arbeiten. Aber warum?
 
> Aber warum?

warum nicht, wie stellst du dir den Ablauf vor?

ein sohn ist auch ein papa, sollte nicht irgendein Konstruktor von papa durchlaufen werden?
wieso in Vererbung anders als bei normaler Erzeugung?
da kannst du ja schließlich im Moment auch nicht [c]new papa()[/c] schreiben
 

Zurück
Oben