La carga de clase significa leer el archivo .class y almacenar los datos binarios correspondientes en el Área de métodos. Para cada archivo .class , JVM almacenará la información correspondiente en el Área de método. Ahora incorporando herencia en la carga de clases. En la herencia de Java, JVM primero cargará e inicializará la clase principal y luego cargará e inicializará la clase secundaria.
Ejemplo
Java
// Java program to Illustrate Class Loading // Importing input output files import java.io.*; // Helper class 1 class A { // First static block of this class static { // Print message System.out.println( "Loading class A 1st static block "); } // Second static block of this class static { // Print message System.out.println( "Loading class A 2nd static block B.c=" + B.c); } // Third static block of this class static { // Print message System.out.println( "Loading class A 3rd static block "); } static int a = 50; A() {} } // Helper class 2 extending from // helper class 1 class B extends A { static { // Print message System.out.println( "Loading class B static block A.a=" + A.a); } static int c = 100; } // Main class class GFG { // Main driver method public static void main(String[] args) { // Execution statement in main class new B(); } }
Loading class A 1st static block Loading class A 2nd static block B.c=0 Loading class A 3rd static block Loading class B static block A.a=50
De la salida anterior. se puede decir que la clase principal se carga antes que la clase secundaria y también que la clase secundaria se inicializa después de la clase principal. Uno puede verificar esto ejecutándolo con java -verbose Test.
El bloque estático se ejecutará en el momento de la carga de la clase, por lo tanto, en el momento de la carga de la clase, si queremos realizar alguna actividad, debemos definirla dentro del bloque estático. En la herencia de bloques estáticos, se deben recordar las dos reglas siguientes:
- No se puede anular un bloque estático ya que se generará el error de tiempo de compilación no estático.
- El bloque no estático no se puede anular como un bloque estático.
El uso del bloque estático en la herencia se muestra a continuación para los escenarios anteriores, ya que el error del compilador que se generará se muestra a continuación para ambos casos individualmente de la siguiente manera:
Caso 1: no se puede anular un bloque estático ya que se generará el error de tiempo de compilación no estático sino
Ejemplo
Java
// Java Program to illustrate static blocks in inheritance // Importing all input output classes import java.io.*; // Class 1- Parent Class class GFG { // Declaring a static method m1 public static void m1() {} } // Class 2 - child class of GFG class c extends GFG { // Declaring a non- static method m1 public void m1() {} }
Producción:
Caso 2: el bloque no estático no se puede anular como un bloque estático
Ejemplo
Java
// Java Program to illustrate static blocks in inheritance // Importing all input output classes import java.io.*; // Class 1 - Parent class class GFG { // Declaring a non-static method m1 public void m1() {} } // Class 2 - child class of parent // child class of GFG class C extends GFG { // Declaring a static method m1 public static void m1() {} }
Producción:
Nota: No se generará ningún error en tiempo de compilación solo y solo si los métodos de clase padre e hijo son estáticos.
Publicación traducida automáticamente
Artículo escrito por mroshanmishra0072 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA