2012-05-18 10 views

Antwort

5

Nein, ist es nicht. Eine Schnittstelle kann nicht instanziiert werden, um ein Objekt zu bilden, es ist nicht eine Klasse.

+0

Sicher, dass die ** Schnittstelle nicht instanziiert werden kann **? Was ist dann mit anonymer Klasse? –

+1

@Quoi: Wie Sie selbst gesagt haben, anonyme Klasse - eine anonyme Implementierung einer Schnittstelle. –

1

Keine Schnittstelle ist eine Unterklasse der Objektklasse, da die Schnittstelle eine Klasse weder implizit noch explizit erweitern kann.

Grund für Konstruktor ist, eine Instanz zu erstellen, da Schnittstelle nicht instanziiert werden kann, da sie keine Funktionalität bieten, sie sind nur ein Vertrag, nur Klasse kann instanziiert werden, daher haben sie Konstruktor.

1

Eine Schnittstelle ist eine benannte Sammlung von Methodendefinitionen (ohne Implementierungen). Eine Schnittstelle kann auch konstante Deklarationen enthalten.

Schnittstelle und Klasse haben einige grundlegende Unterschiede und einer von ihnen hat keine Konstruktoren. Die Schnittstelle ist nicht dafür gemacht und Sie können die Schnittstelle nicht instanziieren, aber es gibt eine Möglichkeit, die Schnittstelle noch zu instanziieren.

Hier Schnittstelle wurde als anonyme Klasse instanziiert. Aber Sie können immer noch nicht Konstruktor hier nach Java-Sprachspezifikation platzieren. Aber immer noch können Sie super Klasse verwenden, die sofort Superklasse dieser anonymen Klasse sein wird.

Und es gibt eine alternative Lösung von diesem, die letzte Variable in der Superklasse verwendet.

0

Während einige Leute vorschlagen, Interfaces als "can-do" und nicht als "is-a" Beziehungen zu betrachten, denke ich, dass es hilfreicher ist, an sie zu denken "ist ein __er" oder "ist eine __able Sache". Um eine Analogie aus der realen Welt zu verwenden, sind ein Buch (eine Totholz-Ausgabe), ein gebundenes Papiermagazin, eine Zeitung, ein Werbungsflieger, ein Schild und ein Stück Papier mit einigen geschriebenen Worten alles "lesbare Dinge" ". Wenn jemand einer anderen Person ein Buch zeigen und fragen würde "Ist das eine lesenswerte Sache", wäre die Antwort, dass es so ist. Auf der anderen Seite, wenn jemand einer anderen Person ein Buch zeigen und fragen würde: "Was ist das?" die Antwort wäre nicht "Eine lesbare Sache", sondern eher "Ein Buch", oder vielleicht "Ein Hardcover-Fünfdruck-Kopie der zweiten US-Ausgabe des Romans" Great Expectations "von Charles Dickens". Jede Art von "lesbarem Ding" hat eine Identität, die nicht nur eine "lesbare Sache" ist.

Ebenso mit Java-Schnittstellen. Ein Objekt kann eine beliebige Anzahl von Schnittstellen implementieren, aber jedes Objekt muss einen Typ zusätzlich zu der Gruppe von Schnittstellen haben, die es unterstützt. Beachten Sie, dass es möglich ist, eine Methode zu definieren, die ein neues Objekt unbekannten Typs zurückgibt, das eine Schnittstelle implementiert; Das würde bedeuten, jemanden zu fragen: "Bitte, bring mir etwas zum Lesen", ohne zu spezifizieren, um was für ein Objekt es sich handelte. Eine solche Methode könnte einen Objekttyp auswählen, der zurückgegeben werden soll, und dem Anrufer ein "lesbares" geben. Konstruktoren erfordern jedoch im Gegensatz zu allgemeinen Methoden, dass der Aufrufer genau angibt, welcher Objekttyp gewünscht wird. Lediglich anzugeben, dass ein Objekt "lesbar" ist, wäre keine ausreichende Spezifikation.

0

Keine Schnittstelle kann keinen Konstruktor haben. Da die Schnittstelle mehrere Vererbungen unterstützt.Das heißt, wenn eine Klasse zwei Schnittstellen erbt, dann wird es aufgrund der Konstruktorverkettung eine Mehrdeutigkeit geben, welcher Konstruktor vom Klassenkonstruktor aufgerufen wird.

Verwandte Themen