Interfaces


Interfaces sind ein Versprechen, dass später ein Objekt eine bestimmte Schnittstelle realisieren wird. Bestimmte Schnittstelle heißt in Java im Wesentlichen, dass es eine bestimmte Menge von Methoden geben wird. Interfaces versprechen also, dass Objekte bestimmte Methoden haben werden.

Neben den Methoden werden in Interfaces üblicherweise alle Konstanten definiert, die man zum Aufruf der Methoden benötigt. Diese Konstanten deklariert man mit   static final, denn man braucht eine Konstante nur einmal (deshalb  static), und man darf sie nie mehr verändern (deshalb final). Genauer zu  static final später.

Die Deklaration eines Interface sieht einer Klassendeklaration sehr ähnlich; Interfaces können von anderen Interfaces erben.

public interface LaufenInterface{
  static final int ALTER = 7; //Konstante 
  public void laufe();        //Methode
}

Java kennt keine Mehrfachvererbung. Diese Einschränkung kann man mit Interfaces ein wenig abmildern, denn Interfaces können in Klassen implementiert werden, die im Vererbungsbaum nichts miteinander zu tun haben. So laufen zum Beispiel nicht nur Elefanten, sondern auch Nasen:

public class Elefant extends Tier implements LaufenInterface 
  public Elefant() {
  }
  public void laufe() {
    System.out.println("Trapp Trapp");
  }
}

 

public class Nase extends Object implements LaufenInterface 
  public Nase() {
  }
  public void laufe() {
    System.out.println("Tropf Tropf");
  }
}

Diese Konstrukte kann man nun ganz bequem über das LaufenInterface aufrufen:

public class Main  
  public Main() {
  }
  public static void Main(String[] args){
    LaufenInterface dumbo = new Elefant();
    LaufenInterface nase  = new Nase(); 
    dumbo.laufe();
    nase.laufe();
  }
}

Es sei noch einmal veranschaulicht, wie ein Interface die Einfachvererbung von Java durchbricht: