¿Las interfaces heredan de la Objectclase en Java?
Si no, cómo podemos llamar al método de clase de objeto en la instancia de interfaz
public class Test {
public static void main(String[] args) {
Employee e = null;
e.equals(null);
}
}
interface Employee {
}
java
inheritance
interface
estanques
fuente
fuente

Serializablees una interfaz, la más simple posible; ejecutarlojavapte dice de qué hereda; y eso lo dicta la especificación del lenguaje Java. Si cree que la especificación JVM entra en algún lugar, por favor, avísenos.Respuestas:
No, ellos no. Y tampoco hay una interfaz común "raíz" heredada implícitamente por todas las interfaces (como en el caso de las clases). (*)
Una interfaz declaró implícitamente un método para cada método público en
Object. Por lo tanto, elequalsmétodo se declara implícitamente como miembro en una interfaz (a menos que ya lo herede de una superinterfaz).Esto se explica en detalle en la Especificación del lenguaje Java, § 9.2 Miembros de la interfaz .
Esta publicación ha sido reescrita como un artículo aquí .
(*) Tenga en cuenta que la noción de ser un subtipo de no es equivalente a heredar de : Las interfaces sin superinterfaz son, de hecho, subtipos de
Object( § 4.10.2. Subtipo entre clases y tipos de interfaz ) aunque no hereden deObject.fuente
Objectclase no se hubieran declarado en la interfaz?equalsmétodo en laEmployeeinterfaz.Objectes un supertipo de cualquier interfaz [1]Sin embargo, una interfaz no lo hace
implements,extendso, "Heredar del"Object.JLS tiene una cláusula especial para agregar
Objectmétodos a las 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
fuente
java.lang.Objecttambién aceptará una referencia de cualquier tipo de interfaz. Además, puede emitir una interfazObjectimplícitamente sin ningún error del compilador.En realidad, hay un campo de superclase en cada
.classarchivo, incluidos los que representan interfaces.Para una interfaz a la que siempre apunta
java.lang.Object. Pero eso no se usa para nada.Otra forma de verlo es:
Aquí el reparto
(Object) paramsiempre es válido, lo que implica que cada tipo de interfaz es un subtipo dejava.lang.Object.fuente
Eso es porque
employee e = ...lee que hay una clase que implementaemployee, y se asigna a la variablee. Cada clase que implementa una interfaz extiende Object implícitamente, por lo tanto, cuando lo hacese.equals(null), el lenguaje sabe que tienes una clase que es un subtipo deemployee.La JVM hará una comprobación de tiempo de ejecución para su código (es decir, throw
NullPointerException).fuente
Es la interfaz hereda la clase Object, ¿cómo podemos acceder a los métodos de la clase de objeto a través de una referencia de tipo de interfaz?
No Interface no hereda la
Objectclase, pero proporciona accesibilidad a todos los métodos de laObjectclase. Los miembros de una interfaz son:declara un método de miembro abstracto público correspondiente a cada método de instancia pública declarado en
Objectclase .Es un error en tiempo de compilación si la interfaz declara explícitamente tal método m en el caso en que se declare que m está
finalenObject.Ahora está claro que todas las superinterfaces tienen un
abstractmétodo miembro correspondiente a cadapublicmétodo de instancia declarado enObject.fuente: http://ohmjavaclasses.blogspot.com/2011/11/is-intreface-inherits-object-clashow.html
fuente
Cualquier clase que implemente cualquier interfaz también se deriva
Objecttambién por definición.fuente
" Todos los tipos de referencia heredan de java.lang.Object . Las clases, enumeraciones, matrices e interfaces son todos tipos de referencia " .
Citado de: http://docs.oracle.com/javase/tutorial/reflect/class/index.html Segunda oración para ser clara.
fuente
Classes, enums, and arrays (which all inherit from java.lang.Object) as well as interfaces are all reference types: no dice que la interfaz hereda de Object. Solo clases, enumeraciones y matrices.