Eine gute Antwort wäre:

Sowohl als auch. Real existierende Objekte können in der Regel unter mehreren Aspekten betrachtet werden.

Schnittstelle

Objektorientierte Programmierung läßt Software sich wie real existierende Objekte verhalten. Das macht Programme verständlicher und verlässlicher. In der realen Welt betrachten Sie Objekte oft auf verschiedene Weise. Sie können Ihr Auto als Fahrzeug betrachten oder als steuerpflichtiges Eigentum. Es wäre praktisch, wenn Software-Objekte ebenfalls unter mehreren Aspekten betrachtet werden könnten. Aber, ein Java Objekt gehört genau zu einer Klasse.

In Java wird eine Schnittstelle verwendet, um den Aspekt einer anderen Klasse auszudrücken als den von der Superklasse geerbten.

Eine Schnittstelle ist eine Sammlung von Konstanten und Methodendeklarationen. Die Methodendeklarationen enthalten keine Implementierung (es gibt keinen Methodenkörper.)

Eine Subklasse, die eine Superklasse erweitert, kann auch eine Schnittstelle implementieren, um zusätzliches Verhalten zu erlangen. Eine Schnittstellendefinition sieht folgendermaßen aus:

interface SchnittstellenName
{
  Konstantendefinitionen
  Methodendeklarationen (ohne Implementierungen)
}

Eine Methodendeklaration ist einfach ein Zugriffsmodifizierer, Rückgabetyp und Methodensignatur gefolgt von einem Semikolon.

Das sieht ungefähr wie eine Klassendefinition aus. Aber es können keine Objekte daraus konstruiert werden. Objekte können von einer Klasse konstruiert werden, die eine Schnittstelle implementiert. Eine Klassendefinition implementiert eine Schnittstelle wie folgt:

class IrgendeineKlasse extends IrgendeineSuperklasse implements SchnittstellenName
{

}

Eine Klasse erweitert genau eine Superklasse, aber sie kann mehrere Schnittstellen implementieren.

FRAGE 2:

(Rückblick: ) Wenn eine Klassendefinition nicht IrgendeineKlasse erweitert, welche Klasse erweitert sie dann?

Inhaltsverzeichnis