1 /*
2 * Varios principios
3 * 1. Variables miembros estáticas
4 * 1. Las variables miembros estáticas son variables de clase, y todos los objetos comparten el mismo espacio de memoria
5 * 2. La declaración y definición de variables estáticas de los miembros se ejecuta solo una vez cuando la clase se carga por primera vez
6 * 3. Al cargar una clase por primera vez, primero asigna valores iniciales a todas las variables miembros estáticas según el tipo, y luego asocia valores derechos a aquellas con valores r
7 * 2. Bloque inicial estático
8 * 1. Los bloques de inicialización estática solo se ejecutan una vez cuando la clase se carga por primera vez
9 * ······ Se ejecutan secuencialmente múltiples variables estáticas de miembros y el orden de ocurrencia rápida de referencia de inicio estático······
10 * 3. Variables dinámicas del miembro
11 * 1. La definición de variables miembros dinámicas se ejecuta antes que el constructor cada vez que se instancia un objeto
12 * 4. Bloque de inicialización dinámica
13*1. El bloque de inicialización dinámica se ejecuta antes que el constructor cada vez que se instancia un objeto
14 * ······ Múltiples variables de miembros dinámicos y bloques de inicialización dinámica se ejecutan en el orden en que aparecen······
15 * Resumen: En general, cuando una clase se carga por primera vez, se ejecuta en el siguiente orden, sin que se implique herencia
16 * 1. Ejecutar la definición estática de variables de miembro y el bloque de inicialización estática en orden de ocurrencia
17 * 2. Ejecutar la definición dinámica de variables miembros y el bloque de inicialización dinámica en el orden de ocurrencia
18 * 3. Ejecutar el constructor
19 * Al instanciar un objeto de nuevo, solo se pueden ejecutar los pasos 2 y 3
20 *
21 * ············ Las variables miembros, definiciones y bloques de inicialización se ejecutan antes que el constructor·········
22 * 5. Cuando se trate de herencia, se llevará a cabo en el siguiente orden
23 * 1. Ejecutar la definición estática de variables miembro y el bloque de inicialización estática de la clase madre, y ejecutar la definición estática de variable miembro y el bloque de inicialización estática de la subclase
24 * 2. Ejecutar el bloque de definición de variable miembro no estática e inicialización dinámica de la clase madre, y ejecutar el método de construcción de clase padre
25 * 3. Ejecutar la definición de variables miembros no estáticas de subclases e inicializar dinámicamente los bloques, y ejecutar el método de construcción de subclases
26 * Además: Si el método usado en el método de construcción de clase padre ha sido reescrito por la subclase, entonces se utiliza el método de reescritura de subclase al llamar al constructor de clase padre al construir el objeto subclase
|