Eine Schnittstelle (englisch interface) dient in der objektorientierten Programmierung der Vereinbarung gemeinsamer Signaturen von Methoden, die in unterschiedlichen Klassen implementiert werden. Die Schnittstelle gibt dabei an, welche Methoden vorhanden sind oder vorhanden sein müssen (Quelle http://de.wikipedia.org/wiki/Schnittstelle_%28Objektorientierung%29). Das Interface selbst kann keine Objekte erzeugen. Es handelt sich viel mehr um eine Art abstrakte Klasse.
Schnittstellen repräsentieren eine Garantie bezüglich der in einer Klasse vorhandenen Methoden. Sie geben an, dass alle Objekte, die diese Schnittstelle besitzen, gleich behandelt werden können.
In der Programmiersprache Java wird keine Mehrfachvererbung unterstützt. Stattdessen können Schnittstellen verwendet werden, um Kompatibilitäten zwischen Klassen zu definieren, die nicht voneinander erben. Eine Klasse kann mehrere Interfaces implementieren. Als Ersatz für Mehrfachvererbung eignen sich Schnittstellen allerdings nicht, da sie lediglich Methoden und deren Parameter definieren und keine Vererbung von Funktionalität ermöglichen.
Quelle (http://www.programmersbase.net/Content/Java/Content/Tutorial/Java/Image/Interface.gif)
Ein Interface-Klasse muss folgendem Aufbau genügen.
Kopf
Eine Interface Deklaration startet wie eine Klasse mit einem Kopf. Der startet mit der Sichtbarkeit (in der Regel public), gefolgt von der Schlüsselwort interface und dem Namen des Interface.
Körper
Nach dem Kopf folgt in geschweiften Klammern der Körper.
Hier können abstrakte Methoden definiert werden, die nur aus ihren Signaturen bestehen.
Außerdem können Variablen deklariert werden. Diese Variablen sind immer final - also Konstanten. Daher müssen sie auch initialisiert werden. Bei einer späteren Implementierung des Interface kann der Wert nicht geändert werden.
Die Klasse die ein oder mehrere Interfaces implementiert schreibt nach dem Klassen-Kopf das Schlüsselwort implements. Nach dem Schlüsselwort folgen das oder die Interfaces. Hierfür wird der Name des Interfaces angegeben. Mehrere Interfaces werden durch Komma getrennt.
import java.util.*;
public interface User {
private Date erzeugtAm = new Date();
// Erzeugt einen Zeitstempel zum Zeitpunkt er Erzeugung mittels der Date-Klasse
// Abstrakte Klassen
public void setUserName(String userName);
public String getUserName();
public void setPasswort(String passwort);
public String getPasswort();
}
// Implementiert das Interface User und überschreibt alle geforderten Methoden
public Mitarbeiter implements User{
private String userName;
public void setUserName(String userName){
if(userName.length>6){
this.userName=userName;
}
}
public String getUserName(){
if(userName.equals(null){
return "";
}else{
return userName;
}
}
public String getPasswort(){
if(passwort.equals(null){
return "";
}else{
return passwort;
}
}
public void setPasswort(String passwort){
if(passwort.length>6){
this.passwort=passwort;
}
}
}
Ein Interface kann selbst von einem anderen Interface erben. Eine Klasse kann gleichzeitig von maximal einer anderen Klasse erben und zusätzlich mehrere Interfaces implementieren.