# konstruktur bei der vererbung



## kostonstyle (26. Mrz 2009)

hallo
ich habe eine subklasse von einer basisklasse geerbt....
bei der Verbung werden der konstruktur von der basisklasse ausgeführt, nicht von der subklasse selber.
Warum eigentlich?

Der Begriff Basisklassenunterobjekt auf was bezieht den das?

Danke kostonstyle


----------



## diggaa1984 (26. Mrz 2009)

man sollte bei vererbung generell *auch* den konstruktor der superklasse aufrufen, da diese sich um 100 andere Sachen kümmern könnte, die allgemein für jede unterklassen gültig sind, bzw kann diese wiederum ihren superkonstruktor aufrufen (mal Swing als bsp genannt: die Vererbungshierarchien sind nicht grad kurz).


----------



## tfa (26. Mrz 2009)

Es wird auf jeden Fall _immer_ der bzw. ein Super-Konstruktor aufgerufen. Wenn man's nicht explizit hinschreibt eben automatisch. Der von der Subklasse natürlich auch. Keine Ahnung, wo das Problem hier ist.


----------



## Verjigorm (26. Mrz 2009)

diggaa1984 hat gesagt.:


> man sollte bei vererbung generell *auch* den konstruktor der superklasse aufrufen, da diese sich um 100 andere Sachen kümmern könnte, die allgemein für jede unterklassen gültig sind, bzw kann diese wiederum ihren superkonstruktor aufrufen (mal Swing als bsp genannt: die Vererbungshierarchien sind nicht grad kurz).



Der Standardkonstruktor der Oberklasse wird IMMER AUTOMATISCH als erstes aufgerufen, es sei denn, man gibt explizit einen parametrisierten Konstruktor der Oberklasse an.

Hat die Oberklasse KEINEN implementierten Standardkonstruktor und z.B. nur einen weiteren Konstruktor, so ist man sogar gezwungen, den parametrisierten Konstruktor der Oberklasse aufzurufen.
Ansonsten kommt die Fehlermeldung (Eclipse) 


> Implicit super constructor ... is undefined for default constructor. Must define an explicit constructor


bzw.


> Implicit super constructor ... is undefined. Must explicitly invoke another constructor


----------



## SlaterB (26. Mrz 2009)

> bei der Verbung werden der konstruktur von der basisklasse ausgeführt, nicht von der subklasse selber.

bei class B extends A wird mit B auch ein A-Objekt erzeugt, das will genauso initialisiert werden wie ein normales A-Objekt,
selbstverständlich muss auch irgendein Konstrukor ran, wie sonst?

irgendein Konstruktor der SubKlasse B kommt aber auch dran, in deinem Satz klingt es so, als würde der dafür weggelassen

------

> Der Begriff Basisklassenunterobjekt auf was bezieht den das?

ein B-Objekt ist auch ein A-Objekt, wenn man diese für sich betrachtet, soweit das möglich ist, 
käme mir der Begriff 'Basisklassenunterobjekt' passend vor, obwohl A ja nicht die Unterklasse, sondern die Oberklasse ist,
aber das A-Objekt ist nunmal unterhalb von B, B ist oben drauf gesetzt 


schau auch bei google, da findet man dazu ein bisschen wenn vielleicht auch nicht für Java


----------



## kostonstyle (26. Mrz 2009)

leute super erklärung....
vielen dank


----------

