Erben Schnittstellen von Object-Klasse in Java
Tun, Schnittstellen Erben von Object
Klasse in Java?
Wenn nicht, dann wie sind wir in der Lage, um die Methode der object-Klasse über interface-Instanz
public class Test {
public static void main(String[] args) {
Employee e = null;
e.equals(null);
}
}
interface Employee {
}
InformationsquelleAutor der Frage ponds | 2011-05-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, tun Sie nicht. Und es gibt keine gemeinsame "Wurzel" - Schnittstelle implizit vererbt alle Schnittstellen entweder (wie im Fall mit Klassen) für diese Angelegenheit.(*)
Einem interface implizit deklariert eine Methode für jede öffentliche Methode in
Object
. So ist dieequals
Methode ist implizit deklariert als Mitglied in einer Schnittstelle (es sei denn, es ist bereits erbt es von einem superinterface).Dies ist ausführlich in der Java Language Specification, § 9.2-Schnittstelle-Mitglieder.
Dieser Beitrag wurde bereits umgeschrieben als Artikel hier.
(*) Beachten Sie, dass der Begriff des seins ein Subtyp ist nicht äquivalent zu erbt von: Schnittstellen mit keine super-Schnittstelle sind in der Tat Subtypen von
Object
( § 4.10.2. Subtypisierung zwischen Klasse und Interface-Typen ), auch wenn Sie nicht Erben ausObject
.InformationsquelleAutor der Antwort aioobe
Es ist wirklich eine Superklasse-Feld in jedem
.class
- Datei, einschließlich derer, die Sie vertreten-Schnittstellen.Für eine Schnittstelle es immer Punkte zu
java.lang.Object
. Aber das ist nicht für alles verwendet.Andere Möglichkeit es zu betrachten ist:
Hier der cast
(Object) param
ist immer gültig, was bedeutet, dass jede Schnittstelle Typ ist ein Subtyp desjava.lang.Object
.InformationsquelleAutor der Antwort finnw
Object
ist ein obertyp von jeder Schnittstelle [1]Eine Schnittstelle jedoch nicht
implements
extends
oder "Erben von"Object
.JLS hat eine spezielle Klausel hinzufügen
Object
Methoden in interfaces [2][1] http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.10.2
[2] http://java.sun.com/docs/books/jls/third_edition/html/interfaces.html#9.2
InformationsquelleAutor der Antwort irreputable
Weil
employee e = ...
liest, dass es eine Klasse, die implementiertemployee
und wird variable zugewiesene
. Jede Klasse, die eine Schnittstelle implementiert extends Object implizit, also, wenn Siee.equals(null)
kennt die Sprache, Sie haben eine Klasse, die ein Untertyp vonemployee
.JVM tun laufzeitüberprüfung für Ihren code (d.h. werfen
NullPointerException
).InformationsquelleAutor der Antwort Buhake Sindi
Ist die Schnittstelle erbt Objekt der Klasse,, wie können wir in der Lage, Zugriff auf die Methoden der Objekt-Klasse durch ein interface-Typ Referenz
Keine Schnittstelle nicht erbt
Object
Klasse, aber es bieten Zugang zu allen Methoden derObject
Klasse.Die Elemente einer Schnittstelle sind:
deklariert eine öffentliche abstrakte member-Methode entsprechend jede öffentliche Instanz-Methode deklariert
Object
Klasse.Es ist eine compile-Zeit-Fehler, wenn das interface erklärt sich ausdrücklich mit einer solchen Methode m in dem Fall, in dem m deklariert
final
imObject
.Nun ist es klar, dass alle superinterface haben
abstract
member-Methode, die der jeweiligenpublic
Instanz-Methode deklariertObject
.Quelle:
http://ohmjavaclasses.blogspot.com/2011/11/is-intreface-inherits-object-clashow.html
InformationsquelleAutor der Antwort Sheo
Jede Klasse die eine Schnittstelle ist auch abgeleitet von
Object
sowie durch definition.InformationsquelleAutor der Antwort jabal
"Referenz-Typen Erben alle von java.lang.Objekt. Klassen, Enumerationen, arrays und Schnittstellen sind alle Referenz-Typen."
Zitiert aus: http://docs.oracle.com/javase/tutorial/reflect/class/index.html
Der zweite Satz klar zu sein.
InformationsquelleAutor der Antwort dalvarezmartinez1