Mais uma pessoal. Na parte de construtores tive a seguinte dúvida. Ae vai o exercício:
class Building {
Building() { System.out.print("b "); }
Building(String name) {
this();
System.out.print("bn " + name);
}
}
public class House extends Building {
House() { System.out.print("h "); }
House(String name) {
this();
System.out.print("hn " + name);
}
public static void main(String[] args) { new House("x "); }
}
What is the result?
A. h hn x
B. hn x h
C. b h hn x
D. b hn x h
E. bn x h hn x
F. b bn x h hn x
G. bn x b h hn x
H. Compilation fails
Segue que a letra C está correta.
Isso seria impresso na console. Pelo que havia lido, um construtor na subclasse vai chamando o outro até o momento em que chama o construtor de Object. Indo pela ordem imaginei que o que aconteceria seria o seguinte:
New House("x ") iria chamar o construtor House(String name) e este por sua vez chamaria this(); o que levaria a Building() já que não houve argumento na chamada a this(). Então deveria imprimir primeiro b, por sua vez hn e depois x sendo b hn x. Pergunta: Porque o h seria impresso senão houve chamada ao construtor House() -sem argumentos- que seria o único que permitiria imprimir o h sozinho? Entendo que o processamento volta no caminho contrário desde a superclasse até a subclasse mas pelo resultado os dois construtores da subclasse House foram chamados na volta…
Tá certo esse resultado do livro?