Nein. Schnittstellen können keine Instanzvariablen enthalten.
Eine Schnittstelle sieht so aus:
interface EineSchnittstelle { Definitionen der Konstanten Methodenheader (ohne Implementationen) }
Ein Methodenheader besteht aus einem Zugriffsmodifizier, einem Rückgabetyp, dem Methodennamen und einer Parameterliste gefolgt von einem Semikolon.
Eine Schnittstelle wird am besten in ihre eigene Quelldatei gestellt mit der Endung
.java
Die Methoden in einer Schnittstelle sind standardmäßig public
,
so dass beim Methodenheader public
ausgelassen werden kann.
Eine Schnittstelle ähnelt einer Klassendefinition. Aber es kann von ihr kein Objekt konstruiert werden. Stattdessen brauchen wir eine Klasse, die die Schnittstelle implementiert und konstruieren dann ein Objekt dieser Klasse.
Eine Klasse implementiert eine Schnittstelle indem sie das tut:
class EineKlasse extends EineSuperklasse implements EineSchnittstelle { }
Eine Klasse kann nur genau eine Superklasse erweitern, aber sie kann mehrere Schnittstellen implementieren.
Eine Klasse kann mehrere Schnittstellen implementieren, so wie hier:
class EineKlasse extends EineSuperklasse implements SchnittstelleA, SchnittstelleB, SchnittstelleC { }
Jetzt muss die Klasse jede der in den Schnittstellen aufgeführten Methoden entweder implementieren oder erben.
Hier ist ein Beispiel einer Schnittstellendefinition:
interface MeineSchnittstelle { // zwei Konstanten public static final int EINEKONSTANTE = 32; public static final double MWST = 0.19; public void methodeA(int x); // Methodenheader public double methodeB(); // Methodenheader }
Eine Methode in einer Schnittstelle ist standardmäßig public
.
Die Konstanten in einer Schnittstelle sind standardmäßig public static final
.
Denkt daran, dass final
bedeutet, dass der Wert zur Laufzeit des Programms nicht geändert werden kann.
Wenn wir von den Standards Gebrauch machen, ist die oben stehende Schnittstelle äquivalent zu der folgenden:
interface MeineSchnittstelle { // eine Konstante ist standardmäßig // public static final int EINEKONSTANTE = 32; // eine Konstante ist standardmäßig // public static final double MWST = 0.19; // ein Methodenheader ist // standardmäßig public void methodeA(int x); // ein Methodenheader ist // standardmäßig: public double methodeB(); }
Die zweite Schnittstelle ist der bevorzugte Weise eine Schnittstelle zu definieren. Die Standards werden vorausgesetzt und nicht expliziert kodiert.
public
deklariert werden.interface IrgendMeineSchnittstelle { public final int X = 32; public double y; public double addiereAuf( ); }