Nein. Instanzvariablen (so wie y
)
können nicht in eine Schnittstelle gestellt werden.
Nur Konstanten und Methoden.
Schnittstelle IrgendeineSchnittstelle
{
public final int X = 32;
public double y; // keine Instanzvariablen erlaubt
public double addiereAuf( );
}
Eine Klassendefinition kann immer nur genau eine Superklasse erweitern, aber sie kann 0, eine oder mehrere Schnittstellen implementieren:
class IrgendeineKlasse extends Superklasse implements IrgendeineSchnittstelle { Körper der üblichen Klassendefinition }
Der Körper der Klassendefinition ist der gleiche wie immer. Aber da die Klasse eine Schnittstelle implementiert, muss der Körper eine Definition jeder nicht-konkreten Methode der Schnittstelle enthalten. Die Klassendefinition kann wie gewöhnlich Zugriffsmodifizierer verwenden. Hier ist eine Klassendefinition, die drei Schnittstellen implementiert:
public class GrosseKlasse extends Superklasse
implements SchnittstelleA, SchnittstelleB, SchnittstelleC
{
Körper der üblichen Klassendefinition
}
Jetzt muss GrosseKlasse
eine Methodendefinition für jede Methode
in jeder Schnittstelle zur Verfügung stellen.
Dieselben Schnittstellen können von einer beliebigen Anzahl Klassen implementiert werden. Hier ist eine weitere Klassendefinition:
public class KleineKlasse implements SchnittstelleA { Körper der üblichen Klassendefinition }
Ist die oben stehende Klassendefinition korrekt? Welche Superklasse erweitert sie?