El resultado en pantalla sería:
a b c
¿Por qué?
El método main hace una instancia de la Clase3
public static void main(String args[]) {
new Clase3();
}
Esta clase, en su constructor imprime una "c " en pantalla.
Pero como hereda de Clase2, antes de ejecutar el código de su constructor, ejecuta el constructor de su madre Clase2, que imprime una "b " en pantalla.
Pero resulta que Clase2, hereda de Clase, así que antes de ejecutar su constructor, ejecuta el del Clase, que imprime una "a " en pantalla.
La conclusión es que una clase que hereda de otra, cuando se hace una instancia de ella, lo primero que hace es "construir" a su clase madre, quien si a su vez también hereda de otra clase, construirá primero a esta.
Entonces, al construir un objeto Clase3, previamente se hace la construcción de Clase2, quién previamente construye Clase.
Así Clase3, es el resultado de los constructores que hayan en la línea de herencia.
Se podría comprobar con este código:
public class Main
{
public static class Clase {
public Clase() {
System.out.print("a ");
}
}
public static class Clase2 extends Clase {
public Clase2() {
System.out.print("b ");
}
}
public static class Clase3 extends Clase2 {
public Clase3() {
System.out.print("c ");
}
}
public static void main(String args[]) {
new Clase3();
}
}