Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


4.12.1

Definition von Interfaces



Die Definition von Interfaces ist von der Struktur her identisch zu Klassen, nur dass eine Interface-Vereinbarung mit dem Schlüsselwort interface eingeleitet wird.

Alle Datenelemente eines Interface sind implizit final static. Diese beiden Modifier können aber auch einzeln oder gemeinsam explizit angegeben werden. Die Methoden eines Interface sind implizit abstract.

Als Beispiel soll ein Interface für allgemeine grafische Objekte dienen. Allen Objekten soll gemeinsam sein, dass sie sich sichtbar und unsichtbar machen können. Ferner soll man die Farbe, in der sie sich darstellen, definieren können. Hierzu enthält das Interface drei Konstanten:
  public interface GraphObj {
    int BLACK = 0;
    int BLUE = 1;
    int WHITE = 2;
    void show();
    void hide();
    void setColor(int Color);
  }
Interfaces, die ausschließlich Konstanten definieren, können nützlich sein, um einen Ersatz für globale Konstanten der prozeduralen Programmierung zu schaffen. Alle globalen Konstanten werden hierzu in einem Interface vereinbart:
  public interface GlobalConstants {
    int MAX_RECORDS = 1000;
    String ERR_MSG = "More than "+MAX_RECORDS+" records.";
  }
Da die Datenelemente eines Interface grundsätzlich statisch sind, ist es zum Zugriff auf die Konstanten nicht unbedingt erforderlich, das Interface zu implementieren. Die erste Konstante aus dem Beispiel könnte auch mit
  GlobalConstants.MAX_RECORDS;
verwendet werden, ohne das Interface zu implementieren.

In einigen Fällen, kann es auch angebracht sein, ein leeres Interface zu definieren. Der Zweck von solchen leeren Interfaces, auch Flag-Interfaces genannt, ist die Signalisierung einer bestimmten Eigenschaft der Klassen, die dieses Interface implementieren. Ein Beispiel für ein Flag-Interface aus der Standardbibliothek ist Cloneable. Durch die Implementierung dieses Interface signalisiert eine Klasse, dass sie die Erzeugung von identischen Kopien zulässt.

Modifier für Interfaces

Interfaces können mit folgenden Modifiern versehen werden:
public Durch die Angabe von public wird ein Interface auch außerhalb des Pakets verfügbar, in dem es definiert ist. Der wesentliche Unterschied zur public-Deklaration einer Klasse ist, dass alle Bestandteile eines public automatisch auch public sind, auch wenn sie nicht explizit als public vereinbart sind.

In Analogie zu den public-Klassen muss ein public-Interface in einer Datei stehen, die genauso heißt wie das Interface.

abstract Im Gegensatz zu Klassen sind alle Interfaces implizit abstract. Die explizite Angabe von abstract ist zwar erlaubt, ist aber unüblich. In der Sprachspezifikation wird sogar davon abgeraten.
strictfp[1.2]Durch die Angabe dieses Modifiers wird in allen Methoden des Interface standardmäßig die erweiterte Gleitpunktdarstellung deaktiviert.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.