Nein. Eine Klasse erweitert immer genau eine Klasse.
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... }
einAnderesObjekt
vom allgemeinen Typ Object
ist, muss es zuerst in den Typ seiner spezifischen Klasse (Subklasse) umgewandelt werden.Nachdem die Methode compareTo
implementiert worden ist, kann die statische Methode sort
der Klasse Arrays
wie folgt aufgerufen werden:
Arrays.sort( meinArray ) ;