# Was macht super?



## awtSwing (3. Mrz 2005)

Hi,

würde gerne wissen welche Funktion diese Methode super(titel) übernimmt. Habe da was gehört mit Oberklassen, kann mir darunter aber nicht vorstellen.






```
public class AuswahlFelder extends Frame {

    AuswahlFelder(String titel) {
        super(titel);
        Choice wahl = new Choice();
        wahl.addItem("Pascal");
        wahl.addItem("Delphi");
        wahl.addItem("Java");
        wahl.addItem("JBuilder");
        wahl.addItem("NetBeans");
        wahl.addItem("Forte4Java");
        wahl.addItem("KDevelop");
        add(wahl);
    }

    public static void main (String args[]) {
        AuswahlFelder app = new AuswahlFelder("AuswahlFelder");
        app.setLocation(100,100);
        app.setSize(200,100);
        app.show();
    }
}
```


----------



## Roar (3. Mrz 2005)

super ist eine referenz auf die oberklasse, super() ruft den oberklassenkonstruktor auf.


----------



## Guest (3. Mrz 2005)

Danke für deine Antwort, aber was heißt das in diesem Fall? Was ist die Oberklasse?


----------



## Wildcard (3. Mrz 2005)

> Danke für deine Antwort, aber was heißt das in diesem Fall? Was ist die Oberklasse?


hmmm, lass mal überlegen....

```
public class AuswahlFelder extends Frame
```
vieleicht hat das was damit zu tun  ???:L     :wink:


----------



## Gast (3. Mrz 2005)

da AuswahlFelder von Frame abgeleitet ist (extends Frame)  ist die Oberklasse somit Frame. Der Parameter ist hier die Bezeichnung der Titelleiste.


----------



## Illuvatar (4. Mrz 2005)

Im Konstruktor werden immer als erstes die Konstruktoren sämtlicher Oberklassen aufgerufen. Mit einem super(irgendwas) kann man bestimen, welcher, ansonsten wird der parameterlose benutzt.


----------



## KSG9|sebastian (4. Mrz 2005)

```
class Fenster{
    private JFrame frame;

    public Fenster(){
       frame = new JFrame("wusch!");
    }
}
```



```
class Fenster extends JFrame{
    public Fenster(){
       super("wusch!");       
    }
}
```


Die beiden Klassen machen das selbe: Die erste Klasse erzeugt nur eine Referenz von JFrame. Die 2. Klasse erbt von der Klasse JFrame.


----------



## Bleiglanz (4. Mrz 2005)

>>Die beiden Klassen machen das selbe:

willst du die Anfänger hier verwirren??


----------



## mic_checker (4. Mrz 2005)

Illuvatar hat gesagt.:
			
		

> Im Konstruktor werden immer als erstes die Konstruktoren sämtlicher Oberklassen aufgerufen. Mit einem super(irgendwas) kann man bestimen, welcher, ansonsten wird der parameterlose benutzt.


Das hört sich vielleicht für einen Anfänger etwas komisch an - sonst könnte er noch meinen das er von jeder Oberklasse direkt den Konstruktor mit super(...) aufrufen kann, auch wenn dazwischen noch ein paar Subklassen liegen.

Deine Oberklasse hat (in der Regel) verschiedene Konstruktoren. Nun kannst du einen dieser Konstruktoren dieser Oberklasse aufrufen, mit super(...).


----------



## KSG9|sebastian (4. Mrz 2005)

warum verwirren? wollte es nur so einfach wie möglich (wenn auch nicht ganz korrekt) halten ^^


----------



## Bleiglanz (4. Mrz 2005)

KSG9|plak hat gesagt.:
			
		

> warum verwirren? wollte es nur so einfach wie möglich (wenn auch nicht ganz korrekt) halten ^^



die Frage war nach super(), was hat das mit deinem Has-A-Beispiel zu tun?

Im übrigen sind die beiden Dinger total verschieden, das extends Frame kann alle Members der Oberklasse direkt aufrufen (das Has-A-Frame muss alles Delegieren), das extends Frame kann man "wie ein Frame" verwenden usw.


----------

