que tengo tres clases:Constructor llamada
public class A {
public A(){
System.out.println("in A");
}
}
public class B extends A{
public B(){
System.out.println("in b");
}
}
public class C extends B{
public C(){
System.out.println("in C");
}
}
Ahora estoy realmente seguro de cómo el constructor llama trabajo. Si instanciamos C c= new C();
, en qué orden (y por qué esa orden) se llama a los constructores. Si instancia la clase C, ¿no debería simplemente comprobar si la clase C tiene un constructor o no y, en caso afirmativo, lo usará?
¿Por qué sale-> En A En B En C?
¿No sube en la jerarquía solo cuando no encuentra el constructor en su propia clase? ¿O los constructores de la superclase se llaman implícitamente cada vez?
Que "en realidad se invocará A primero" la redacción es engañosa. El constructor de C se llama primero porque está inicializando una instancia de tipo C. La orden de impresión es causada por el flujo de control para los constructores en la jerarquía, no porque el constructor de A se llama primero. –
@Anthony: Intenté explicar esta idea en mi respuesta, si tiene un término mejor, con mucho gusto lo usaré, desafortunadamente el inglés no es mi lengua materna ..: \ – amit