Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/03/2015, 11:35
JackSantana
 
Fecha de Ingreso: marzo-2015
Mensajes: 3
Antigüedad: 9 años, 9 meses
Puntos: 0
Codigo con Inicialización static explicita

Hola estimados.
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:
package Ejercicio;

public class Cup {
	Cup(int marker){
		System.out.println("Cup("+ marker +")");
	}
	
	void f(int marker){
		System.out.println("f("+ marker + ")");
	}

}
Cuando ejecuto esto me muestra de formato de salida:

Cita:
Inside main()
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.

Última edición por JackSantana; 14/03/2015 a las 11:46