Kurzeinstieg Java: Interfaces

Was ist ein Interface?

Bearbeiten

Interfaces als Java-Typ beschreiben eine öffentliche Schnittstelle der implementierenden Klassen. Schlüsselwort für die Deklaration eines Interface ist interface, welches anstelle der class Deklaration tritt. Ein Interface selbst kann nicht instanziiert werden.

interface MyInterface {}

public class Test implements MyInterface {

  public static void main(String[] args) {
    System.out.println("Test");
  }
  
}

Im einfachsten Fall deklariert ein Interface keinerlei Methoden. Schnittstellen werden benutzt, um sich auf einen gemeinsamen Satz von Eigenschaften zu einigen. Beispielsweise ist die Eigenschaft "sortierbar" zu sein verbunden mit der Möglichkeit, zwei Dinge mit "kleiner oder gleich" vergleichen zu können. Also etwa "Aachen ≤ Dresden" weil "Aachen" weniger (oder gleichviele) Buchstaben wie "Dresden" hat. Algorithmen können sich dann auf einen Satz von Methoden verlassen, die Klassen zu implementieren haben, um als sortierbar zu gelten.

interface Sortierbar {
  boolean ist_kleiner_gleich(int a);
}

class SortierbareKlasse implements Sortierbar {

    private int wert;

    public boolean ist_kleiner_gleich(int x) {
      return wert <= x;
    }
     
    public SortierbareKlasse(int arg) {
      wert = arg;
    }
}
 
public class T  {
  public static void main(String[] args) {
    System.out.println("Test");
  }
}

Eine weitere Sichtweise von Schnittstellen bildet einen Vertrag. Eine Klasse implementiert ein Interface bedeutet, einen Vertrag über die Methoden der Klasse zu erfülllen.

Wie definiert man Konstanten in Schnittstellen?

Bearbeiten
interface SpieleFussball {
    int SPIELER_ZAHL = 11; // auf jeder Seite, wenn alles gut läuft 
    void renneDurchDieGegend(); 
    void schiesseTor();
}
 
class FcBayernMuenchen implements SpieleFussball { 
 
    FcBayernMuenchen() {
        System.out.println("Bayern steht mit " + SPIELER_ZAHL + " Spielern auf dem Platz.");
    }
     
    public void renneDurchDieGegend() {
        // ...
    }
     
    public void schiesseTor() {
        // ...
    }

}
 
class Fussball
{
    public static void main(String[] args) {
        FcBayernMuenchen fcbm = new FcBayernMuenchen();
    }
}

Wie nutzt man mehrere Schnittstellen?

Bearbeiten

Wie vererbt man Schnittstellen?

Bearbeiten