Ho tre classi:Constructor chiamata
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");
}
}
ora sono davvero sicuro di come il costruttore chiama lavoro. Se istanzio C c= new C();
, in quale ordine (e perché questo ordine) vengono richiamati i costruttori. Se istanzio la classe C, non dovrebbe controllare se la classe C ha o meno un costruttore e se lo fa, deve usarlo?
Perché viene emesso-> In A In B In C?
Non sale nella gerarchia solo quando non trova il costruttore nella propria classe? Oppure i costruttori della super classe sono chiamati implicitamente ogni volta?
Che "effettivamente A sarà invocato per primo" la dicitura è fuorviante. Il costruttore di C viene chiamato prima, perché stai inizializzando un'istanza di tipo C. L'ordine di stampa è causato dal flusso di controllo per i costruttori nella gerarchia, non perché il costruttore di A viene chiamato per primo. –
@Anthony: ho cercato di spiegare questa idea nella mia risposta, se hai un termine migliore lo userò volentieri, purtroppo l'inglese non è la mia lingua madre ..: \ – amit