Forum: PC-Programmierung Funktion ruft Konstruktor auf


von Tom (Gast)


Angehängte Dateien:

Lesenswert?

Ich verstehe ich Funktion super(n,a) nicht und wieso diese den 
Konstruktor aufruft.


In Foile4.pdf ist der Quellcode auf Seite 7.


Kann mir jemand erklären, was damit gemeint ist?



Danke Gruß


Tom

von Tom (Gast)


Lesenswert?

Seite 8 unten gelesen?

von Tom (Gast)


Lesenswert?

Tom schrieb:
^^  ist nicht der OP, sondern ein anderer Tom.

von Tom (Gast)


Lesenswert?

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

Gruß

Tom

von Tom (Gast)


Lesenswert?

Tom schrieb:
> Tom schrieb:
> ^^  ist nicht der OP, sondern ein anderer Tom.

Ist ja lustig noch ein Tom

von Tom (Gast)


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.

von Tom (Gast)


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.

von Tom (Gast)


Lesenswert?

Ist Tom jetzt der uc.net-Bernd? Kann Tom da einen Trend erkennen?

von Tom (Gast)


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

von Tom (Gast)


Lesenswert?

OK, super danke!

von algo (Gast)


Lesenswert?

@ Fragender Tom

Darf man fragen warum Java? Was reizt dich daran?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.