Estoy aprendiendo Java y hay una parte en un código que no logro entender.
Código:
package Ejercicio; public class ExplicitStatic { public static void main(String[] args){ System.out.println("Inside main()"); Cups.cup1.f(99); } }
Código:
package Ejercicio; public class Cups { static Cup cup1; static Cup cup2; static { cup1 = new Cup(1); cup2 = new Cup(2); } Cups(){ System.out.println("Cups()"); } }
Código:
Cuando ejecuto esto me muestra de formato de salida:package Ejercicio; public class Cup { Cup(int marker){ System.out.println("Cup("+ marker +")"); } void f(int marker){ System.out.println("f("+ marker + ")"); } }
Cita:
Inside main()
Cup(1)
Cup(2)
f(99)
Cup(1)
Cup(2)
f(99)
Bien lo que entiendo es que cuando el compilador ejecuta la siguiente linea (Cups.cup1.f(99);) en main lo que hace es entrar a la clase Cups y en primer orden ejecuta los inicializadores static declarados en la clase Cups creando los objetos cup1 y cup2 y finalmente invoca al metodo f(99) del objeto cup1.
Mi pregunta es la siguiente:
¿Porque no se ejecuta el constructor de la clase Cups (el que marque con negritas)? (según lei en un tutorial, los constructores se ejecutan en forma automática pero acá no se ejecuta). Disculpen si la pregunta llegase a ser absurda, pero en verdad nose bien que pasa allí, soy nuevo y me anima aprender bien este lenguaje jejeje. Muchas gracias al que me ayude :D.