variable tipo polimorfismo getclass clase abstracta java inheritance interface

tipo - tostring java



¿Las interfaces heredan de la clase Object en java? (7)

¿Las interfaces heredan de la clase Object en Java?

No, ellos no. Y tampoco existe una interfaz común "raíz" heredada implícitamente por todas las interfaces (como en el caso de las clases). (*)

Si no, ¿cómo podemos llamar al método de la clase de objeto en la instancia de la interfaz?

Una interfaz declaró implícitamente un método para cada método público en Object . Por lo tanto, el método equals 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 .

9.2 Miembros de la interfaz

[...]

  • Si una interfaz no tiene superinterfaces directas, la interfaz declara implícitamente un método miembro público público m con firma s , return tipo r y throws cláusula t correspondiente a cada método de instancia pública m con firma s , return type r y throws cláusula t declarado en Object , a menos que la interfaz declare explícitamente un método con la misma firma, el mismo tipo de devolución y una cláusula throws compatible.

[...]

Esta publicación ha sido reescrita como un artículo here .

(*) 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 Subtipificación entre clase y tipos de interfaz ) aunque no hereden de Object .

¿Las interfaces heredan de la clase Object en Java?

Si no, ¿cómo podemos llamar al método de la clase de objeto en la instancia de la interfaz?

public class Test { public static void main(String[] args) { Employee e = null; e.equals(null); } } interface Employee { }



Cualquier clase que implemente cualquier interfaz también se deriva también de Object por definición.


En realidad, hay un campo de superclase en cada archivo .class , incluidos los que representan interfaces.

Para una interfaz siempre apunta a java.lang.Object . Pero eso no se usa para nada.

Otra forma de verlo es:

interface MyInterface { // ... } public myMethod(MyInterface param) { Object obj = (Object) param; // ... }

Aquí el (Object) param del molde (Object) param siempre es válido, lo que implica que cada tipo de interfaz es un subtipo de java.lang.Object .


Eso es porque el employee e = ... dice que hay una clase que implementa employee , y se asigna a la variable e . Cada clase que implementa una interfaz extiende Objeto implícitamente, por lo tanto cuando haces e.equals(null) , el lenguaje sabe que tienes una clase que es un subtipo de employee .

La JVM hará una verificación en tiempo de ejecución de su código (es decir, lanzar NullPointerException ).



Is intreface hereda Clase de objeto, ¿cómo podemos acceder a los métodos de clase de objeto a través de una referencia de tipo de interfaz
No Interface no hereda la clase Object , pero proporciona acceso a todos los métodos de la clase Object . Los miembros de una interfaz son:

Those members declared in the interface. Those members inherited from direct superinterfaces. If an interface has no direct superinterfaces, then the interface implicitly

declara un método de miembro público abstracto correspondiente a cada método de instancia pública declarado en clase de Object ,.
Es un error en tiempo de compilación si la interfaz declara explícitamente tal método m en el caso en que m se declara como final en Object .

Ahora está claro que todas las superinterfaces tienen abstract método de miembro abstract correspondiente a cada método de instancia public declarado en Object .
fuente: http://ohmjavaclasses.blogspot.com/2011/11/is-intreface-inherits-object-clashow.html