Funktion ruft Konstruktor auf

Gast #3797288
Lesenswert?

Wird doch etwas weiter unten erklärt. Damit initialisierst du die 
Instanz der Elternklasse "Person". "Trainer" soll ja nicht auf die 
internen Person-Variablen zugreifen (Kapselung). Außerdem spart man sich 
so etwas Arbeit.
"erfahrung" ist hier Bestandteil der abgeleiteten Klasse "Trainer" und 
wird darum separarat im Trainer-Konstruktor initialisiert; den Rest 
übernimmt der Person-Konstruktor.
Gast #3797295
Lesenswert?

Tom schrieb:
> aber warum weiß die Funktion super(n,a)

Java ist so schlau und ersetzt das super() durch den Konstruktor von 
Person(), da eindeutig klar ist, wovon Trainer abgeleitet ist und Java 
also weiß, welcher Konstruktor gemeint ist.

In C++ z.B. ginge das nicht so. Da man dort von mehreren Klassen 
gleichzeitig ableiten kann, gibt es keine eindeutige Superclass und man 
muss explizit angeben, welchen Konstruktor man wie aufrufen will.
Gast #3797297
Lesenswert?

Tom schrieb:
> JA ok aber warum weiß die Funktion super(n,a), dass sie den
> Konstruktor der Klasse Person öffnen muss????

Welchen sonst? Es gibt in Java keine Mehrfachvererbung. Existiert in der 
Elternklasse kein Konstruktor mit den entsprechenden Parametern, gibt es 
einen Fehler beim Kompilieren.

Wenn in der Elternklasse kein Konstruktor explizit definiert wird, wird 
einer erzeugt (parameterloser Default-Konstruktor) und dieser auch ohne 
dein Zutun aufgerufen.

http://docs.oracle.com/javase/tutorial/java/IandI/super.html

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren