Interfaces in Java
Geizhals » Forum » Programmierung » Interfaces in Java (5 Beiträge, 71 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
...
Re(3): Interfaces in Java
11.05.2003, 13:36:48
Nach langer Überlegung hab ich das Konzept der Interfaces verstanden.
Ich danke dir trotzdem für deine Erklärung.

Ein Beispiel:

Nehmen wir an wir haben eine allgemeine Klasse "Client" die von der Klasse Thread abgeleitet ist. Ihre Aufgabe besteht im Großen und Ganzen darin zu einem Server zu verbinden und wenn verbunden Streams zu öffnen und in der run()-Methode laufend Daten zu empfangen. Was aber mit den Daten geschehen soll, die angekommen sind hängt von der Klasse ab, die die Schnittstelle implementiert. Implementieren heißt nichts anderes wie erben, aber mit dem einen Unterschied, dass man leere Methoden erbt, man kann sagen es sind abstrakte Methoden da sie erst von der Benutzerklasse konkretisiert werden. Das bedeutet, dass der Sourcecode aller geerbten, abstrakten Methoden definiert werden muss (man sagt auch implementieren, deshalb das treffende Schlüsselwort "implements"), da sonst in der Klasse, die diese Methoden als Schnittstelle anbietet, ein Fehler auftreten würde.

public class Client extends Thread
{
  //das ist der Zeiger auf die Benutzerklasse, die den SocketListener implementiert
  //so können die Methoden aufgerufen werden
  private SocketListener sl = null; //wenn sl null ist können Fehler beim Aufruf einer
                                             //Methode auftreten => Fehlerbehandlung
  
  //diverse Methoden
  Client() { ... }
  Client(String Host, int Port) { ... }
  public void connect(String Host, Port) { ... }
  //etc.
  //Methode die den SocketListener setzt, man kann sich das als Zeiger vorstellen,
  //der auf die Klasse zeigt, die die definierten Methoden beinhaltet
  public void setSocketListener(SocketListener sl) {
    this.sl = sl;
  }
  public void run()
  {
    //in einer while-Schleife Daten abfragen
    while(true)
    ...
    sl.onReceive(Object Data); //die Methode aufrufen die die Schnittstelle bietet
    ...
    }
  }
}
//Das Interface
interface SocketListener {
  void onReceive(Object Data); //automatisch public; protected und private sinnlos
}

//eine Benutzerklasse als Beispiel:

public class Test implements SocketListener {
  public static void main(String args[]) {
    Client c = new Client();
    c.setSocketListener(this);    
    c.connect("somehost", 5000);
  }
  public void onReceive(Object Data) {
    System.out.println( (String)Data );
  }
}

Wenn jemand ein Fehler entdeckt oder noch etwas sagen möchte soll sich keinen Zwang antun und mich korrigieren.


Der Schmerz bindet an die Realität.
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung