Eine gute Antwort wäre:

Nein. Eine Klasse erweitert immer genau eine Klasse.

Der Dienst sort() der Klasse Arrays

Über eine Schnittstelle wird die Funktionalität von Objekten erweitert. Der Anbieter eines Dienstes verlangt dabei, dass eine Klasse mit einer bestimmten Schnittstelle konform geht (sie implementiert). Wenn sie das tut, stellt er dafür einen Dienst (Methode) zur Verfügung.

Zum Beispiel verspricht die Methode sort() der Klasse Arrays ein Array von Objekten zu sortieren, falls deren Klassen sich verpflichten die Schnittstelle Comparable zu implementieren.

Comparable besteht aus einer einzigen Methode und sieht folgendermaßen aus:

public interface Comparable
{
  int compareTo( Object einAnderesObjekt );
}

Diese Instanzmethode erwartet als Parameter ein Objekt vom Typ Object und gibt einen Integer zurück.

  int i = meinObjekt.compareTo( einAnderesObjekt );

In der oben stehenden Anweisung ruft meinObjekt seine Methode compareTo() auf und übergibt dabei einAnderesObjekt mit dem es sich vergleichen möchte. Wenn meinObjekt kleiner ist als einAnderesObjekt, dann soll die Methode compareTo() < 0 (z.B. -1) zurückgeben. Ist meinObjekt größer soll > 0 ( z.B. +1) zurückgegeben werden. Sind die beiden Objekte gleich groß, soll 0 zurückgegeben werden.

Hinweis: Diese Methode wird im Programm nicht explizit aufgerufen. Ihr Aufruf erfolgt über die Methode sort() der Klasse Arrays.

Die Implementation des Interface Comparable erfolgt dann auf diese Weise:

int compareTo( Object einAnderesObjekt )
{
  IhreKlasse speziell = (IhreKlasse)einAnderesObjekt ;
  if ( datenfeld < speziell.datenfeld ) return -1 ;
  // weitere Anweisungen...
}

Nachdem die Methode compareTo implementiert worden ist, kann die statische Methode sort der Klasse Arrays wie folgt aufgerufen werden:

Arrays.sort( meinArray ) ;

FRAGE 23:

Möchten Sie das ausprobieren?

Inhaltsverzeichnis