Red de conocimiento informático - Aprendizaje de programación - ¿Todas las clases en Java heredan objetos?

¿Todas las clases en Java heredan objetos?

Heredado por defecto.

Si no declara una clase para heredar al crear una clase, entonces Java heredará de la clase Objeto de forma predeterminada.

Clase pública A{

/*código*/

}

La clase pública A extiende java.lang.Object{

/*Código*/

}

La clase pública equivalente Prueba de los dos tipos anteriores //Hereda de la clase Objeto.

{

Public static void main(String[] args)

{

System.out.println(new test() . toString());

}

}

Como se puede ver en el código anterior, de hecho, la clase principal de la clase de prueba es Object. , por lo que se puede probar Utilice recursos públicos o protegidos de la clase Object, como el método toString. Entonces, ¿cómo lo hacen el compilador de Java y la JVM?

Para comprender esta verdad, en realidad no es necesario comprender los detalles de implementación de la JVM. Basta pensar en el principio de este programa de máquina virtual. En términos generales, para los lenguajes que se ejecutan en máquinas virtuales (como Java y C#), existen dos formas de abordar el problema de la herencia predeterminada.

1. Al compilar el código fuente, cuando encuentre una clase sin una clase principal, el compilador especificará una clase principal predeterminada (generalmente Objeto). Cuando la máquina virtual procesa esta clase, dado que esta clase ya tiene una clase principal predeterminada, la máquina virtual seguirá procesando cada clase de la forma habitual. En este caso, desde una perspectiva binaria compilada, todas las clases tienen una clase principal.

2. El compilador aún compila basándose en el código real y no realizará procesamiento adicional. Si una clase no hereda explícitamente de otra clase, el código compilado aún no tiene una clase principal. Luego, cuando la máquina virtual ejecuta el código binario y encuentra una clase sin una clase principal, automáticamente tratará esta clase como una subclase de la clase Objeto (generalmente la clase principal predeterminada de este tipo de lenguaje es Objeto).

Como se puede ver en los dos casos anteriores, el caso 1 es un artículo escrito en el compilador, es decir, cuando no hay una clase principal, el compilador le asigna automáticamente una clase principal durante la compilación. La segunda situación es hacer un escándalo en la máquina virtual, es decir, la máquina virtual agrega la clase principal predeterminada.