# call to super must be first statement in constructor



## Infostudent (4. Feb 2007)

Hallo, ich erhalte zwei Fehlermeldungen, die ich nicht ganz begreife.

Ich habe in einer Sub-Subklasse einen Konstruktor, der also den der Superklasse und den der Super-Superklasse aufruft. Allerdings kommt hierbei die Fehlermeldung "call to super must be first statement in constructor". Die Super-Anweisungen sind doch aber die ersten Statements meines Konstruktors. Also wo liegt da der Fehler?



```
public class Manager extends Chef {

  String handy;

    // Konstruktor

   public Manager (String name, String adresse, String telefonnummer, int gehalt, String eMail, String handy) {
    super (super (name, adresse, telefonnummer, gehalt));
    super (eMail);
    this.handy = handy;
    }

}
```



Freundliche Grüße,
Infostudent.


----------



## Beni (4. Feb 2007)

Du darfst nur ein einziges "super" haben. z.B. etwa so:

```
public Manager( XYZ xyz, String handy ){
  super( xyz );
  this.handy = handy;
}
```

Das hier "super (super (name, adresse, telefonnummer, gehalt));" macht keinen Sinn: das innere "super" liefert doch nichts zurück, wie soll denn was nochmal aufgerufen werden?


----------



## Infostudent (4. Feb 2007)

Ah, danke.

Hätte gedacht, dass man Konstruktoren, die zwei Ebenen höher liegen, auch über zwei Mal super aufrufen musste, aber der Konstruktor der Superklasse greift ja automatisch auf die Super-Superklasse zu.


Bye,
Infostudent.


----------



## moormaster (4. Feb 2007)

Infostudent hat gesagt.:
			
		

> Ah, danke.
> 
> Hätte gedacht, dass man Konstruktoren, die zwei Ebenen höher liegen, auch über zwei Mal super aufrufen musste, aber der Konstruktor der Superklasse greift ja automatisch auf die Super-Superklasse zu.
> 
> ...



Jo um genau zu sein, kannst du gar nicht mehr direkt auf die Konstruktoren der Oberklasse der Superklasse zugreifen.
Entweder deine Superklasse stellt einen Konstruktor bereit, welcher die Parameter direkt an einen Kontruktor ihrer Oberklasse weiterreicht oder der Konstruktor ist eben nicht mehr zugänglich auf dieser Ebene bzgl. der Vererbung.


----------

