2009-06-30 6 views
7

Was ist Super-Schnittstelle ist Java? Was ist der Zweck der Super-Schnittstelle?Superschnittstelle in Java

+4

Ich empfehle dringend, google zu verwenden, bevor Sie Fragen dieser Art stellen. – dborba

+0

Meinst du "super()"? Super in Java verweist auf das Basisobjekt der Klasse. – Zack

+1

@DB, ich denke, es ist in Ordnung, grundlegende Fragen zu stellen, die auf SO nachgeschlagen werden können. Siehe http://stackoverflow.com/questions/1003841/how-do-i-move-the-turtle-in-logo von Jeff. –

Antwort

1

Wenn Sie

public interface Bar extends Foo 

haben dann Foo wäre der Super-Schnittstelle von Bar sein. Dies erklärt, dass alle Instanzen von Bar sind auch Fälle von Foo und können als solche behandelt werden, so könnten Sie eine Bar Instanz übergeben, wo Sie eine Foo passieren benötigt usw.

12

Hier ist ein Beispiel:

public interface A { 
    void doSomething(); 
} 

public interface B extends A { 
    void doSomethingElse(); 
} 

In diesem Beispiel ist A eine Superschnittstelle von B. Es ist wie eine Superklasse zu sein. Jede Klasse, die B implementiert, implementiert nun auch automatisch A und muss eine Implementierung von doSomething() und doSomethingElse() bereitstellen.

+0

Hinweis: Eclipse sagt auch, dass X & Y ein "Superinterface" für "Schnittstelle Z erweitert X, Y" ist. – simpleuser

1

Wenn eine Schnittstelle von einer anderen Schnittstelle ausgeht, erzwingt sie die Klasse, die sie implementiert, um Methoden in beiden Schnittstellen zu implementieren.

Wenn eine Klausel erstreckt vorgesehen ist, dann die Schnittstelle deklariert wird erweitert jeder der anderen genannten Schnittstellen und daher die Elementtypen erbt, Methoden und Konstanten von jedem der anderen genannten Schnittstellen. Diese anderen genannten Schnittstellen sind die direkten Superschnittstellen der Schnittstelle, die deklariert sind. Jede Klasse, die die deklarierte Schnittstelle implementiert, wird auch betrachtet, um alle Schnittstellen zu implementieren, die diese Schnittstelle erweitert.

Sie können auch Verfahren überwiegendes haben :)

http://java.sun.com/docs/books/jls/second_edition/html/interfaces.doc.html

1

Schnittstellen in Java können sich gegenseitig verlängern, so dass die Verlängerung Schnittstelle alle von den Eltern zur Verfügung gestellt Dinge unterstützt, und die Dinge, die sie selbst liefert . Ein Set verfügt beispielsweise über eindeutige Operationen, unterstützt aber auch alles, was eine Collection ausführt.

Die Schnittstellen, von denen Sie erweitern, gelten als Super-Schnittstellen. Beachten Sie, dass eine Schnittstelle mehrere Schnittstellen erweitern kann und daher über mehrere Super-Schnittstellen verfügt.

+0

Eigentlich ist eine Map keine Collection. – ColinD

+0

@Uri - Karte erweitert nicht Sammlung ;-) Liste tut zwar, um Ihren Punkt zu unterstützen. – Robin

+0

Tatsächlich ist Map explizit keine Sammlung, da ihre Operationen auf Objektpaaren statt auf einem einzelnen Objekt definiert sind. Die Map-Methoden sind sehr klar, ob sie für die Schlüssel oder die Werte gelten: die Verwendung als Collection wäre sehr mehrdeutig. – James

0

wenn Sie 2 Schnittstellen mit einigen verwandten (gleichen) Feldern oder Methoden haben. sollten Sie eine als superInterface verwenden, die die zweite erweitern wird, sollten Sie es nicht duplizieren. Dies ist, weil Einfachheit und Klarheit zu sehen, was genau vor sich geht.

0

Der Begriff Superschnitt hat leicht unterschiedlichen Verwendungszwecke, je nach Kontext von (a) -Schnittstellen nur, und (b) Klassen, wie nachstehend beschrieben:

(a) gegebenen Schnittstellen A und B, wenn B erstreckt sich eine dann ist A eine Superschnittstelle von B (die obige Erklärung von Tom.

)

siehe jls8, 8.1.5

(b) gegebene Klasse X, und C-Schnittstelle, wenn X C umsetzt, dann ist C ein direkter Superschnitt von X.

siehe jls8, 9.1.3

Der zweiten Fall hier ist aus keiner der vorherigen Erklärungen klar. Das heißt, im Fall (b) besteht keine Anforderung für eine hierarchische Kette von Schnittstellen, um den Begriff Superschnittstelle zu verwenden.

Verwandte Themen