Copie el código de código de la siguiente manera:
clase pública Prueba4 {
@Prueba
prueba de anulación pública(){
niño niño = nuevo niño();
}
}
padre de clase {
public static String parentStaticField = "Variable estática de clase principal";
public String parentNormalField = "Variable normal de clase principal";
estático {
System.out.println(parentStaticField);
System.out.println("Bloque estático de clase principal");
}
{
System.out.println(parentNormalField);
System.out.println("Bloque ordinario de clase principal");
}
padre público(){
System.out.println("Constructor de clase principal");
}
}
hijo de clase extiende padre {
cadena estática pública childStaticField = "Variable estática de subclase";
public String childNormalField = "Variable normal de subclase";
estático {
System.out.println(childStaticField);
System.out.println("Bloque estático de subclase");
}
{
System.out.println(childNormalField);
System.out.println("Bloque ordinario de subclase");
}
niño público(){
System.out.println("Constructor de subclase");
}
}
Producción:
Copie el código de código de la siguiente manera:
variable estática de clase padre
bloque estático de clase padre
Variables estáticas de subclase
bloque estático de subclase
Variable ordinaria de clase principal
Bloque normal de clase padre
Constructor de clase padre
Variables ordinarias de subclase
Bloque normal de subclase
constructor de subclases
Proceso de ejecución:
1. Al ejecutar un nuevo hijo, el cargador busca el código de la clase secundaria compilada (es decir, el archivo child.class). Durante el proceso de carga, el cargador nota que tiene una clase base, por lo que carga la clase base nuevamente. Este proceso siempre ocurrirá ya sea que cree un objeto de clase base o no. Si la clase base tiene otra clase base, también se cargará la segunda clase base, y así sucesivamente.
2. Realice la inicialización estática de la clase base raíz, luego la inicialización estática de la siguiente clase derivada, y así sucesivamente. Este orden es muy importante, porque la "inicialización estática" de la clase derivada puede depender de la inicialización correcta de los miembros de la clase base.
3. Cuando se hayan cargado todas las clases necesarias, cree un objeto de clase secundaria.
4. Si la clase secundaria tiene una clase principal, se llama al constructor de la clase principal. Puede usar super para especificar a qué constructor llamar.
El proceso de construcción y la secuencia de construcción de la clase base son los mismos que los de la clase derivada. Primero, cada variable de la clase base se inicializa en orden literal y luego se ejecuta el resto del constructor de la clase base.
5. Inicialice los datos de los miembros de la subclase en el orden en que se declaran y ejecute el resto del constructor de la subclase.