carookee - group communication for you
Home / JavaForum / Java allgemein
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
4.582 User online
0 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 919 von 2212 (42%) |<   <   >   >|

Autor Maik Schreiber
Datum 30.11.01, 02:50
Betreff Re: super()


Sorry, aber dann ist Dein Java-Tutorial nicht so ganz der Brüller.

Mit super kann man verschiedene Dinge tun:

1. Im Constructor den Constructor der Superklasse aufrufen. Dabei kannst Du einen x-beliebigen Constructor Deiner Superklasse wählen. Wenn Dein Constructor also z.B. so aussieht:

public Subclass(int x) { ... }

und der Deiner Superklasse so:

public Superclass(String y) { ... }

dann könntest Du den Subclass-Constructor wie folgt schreiben:

public Subclass(int x)
{
    // an dieser Stelle wird dann Superclass(String y) aufgerufen
    super("yyy");
}


Wie gesagt, es steht Dir frei, welchen Superclass-Constructor Du aufrufen willst (er muß natürlich existieren). Wenn Du keinen super()-Aufruf benutzt, setzt der Compiler automatisch einen Aufruf zu super() ein, d.h. es wird der Constructor der Superclass *ohne* irgendwelche Parameter aufgerufen. Existiert dieser nicht, gibt es einen Compiler-Fehler.


Hinweis: Es ist nicht möglich, den Constructor der Superclass an einer späteren Stelle aufzurufen - der Aufruf muß immer am Anfang des eigenen Constructors erfolgen.

Außerdem kann der Superclass-Constructor nicht außerhalb eines Constructors aufgerufen werden. Eine normale Methode dürfte dies also z.B. nicht.


2. super wird benutzt, um Methoden der Superclass aufzurufen.

Beispiel: Du hast eine Klasse "Subclass", die von der Klasse "Superclass" abgeleitet ist. Die Klasse "Superclass" hat eine Methode x(). Dir gefällt zwar, was Superclass.x() macht, aber Du möchtest noch mehr machen. In diesem Fall würdest Du wollen, daß, wenn Subclass.x() aufgerufen wird, zuerst Superclass.x() ausgeführt wird, und danach dann Dein eigener Code in Subclass.x().

Umzusetzen wäre das dann so:

public class Superclass
{
    public void x()
    {
        // tu was
    }
}


public class Subclass extends Superclass
{
    public void x()
    {
        // rufe Superclass.x() auf
        super.x();
        
        // ... und jetzt tu was anderes
    }
}



Diskussionsverlauf:
    Re: super()
super()

 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com