Duvida sobre inicialização na declaração de atributos

Pessoal, estou com uma duvida que me parece um tanto estranha,
no método printFilho o valor do atributo b impresso é null, porem ele foi inicializado
na sua declaração, porque então ele está nulo.

[code]
public class Teste {
public static void main(String[] args) {
new Filho(“a”);
}
}

abstract class Pai {
String a;

public Pai(String a) {
	this.a = a;
	print();
}

public void print() {
	System.out.println(a);
	printFilho();
}

public abstract void printFilho();

}

class Filho extends Pai {
String b = “b”;

public Filho(String a) {		
	super(a);
}

public void printFilho() {
	System.out.println(b);
}

}[/code]

[]s

Problema interessante. Acabo de rodar este código numa sessão de debug, e o valor de só é atribuído após a chamada a super(a), o que explica o valor nulo.

Obrigado pela ajuda roger_rf , rodei também em debug, percebi que ao entrar no construtor do pai o cursor do debug vai direto para a declaração do atributo a, porém na filha ela entra primeiro na chamda do super, ao invés de ter o mesmo comportamento da classe Pai, por que será que isso acontece.

Descobri,

Isso acontecen porque sempre que uma classe filha de outra é instancia a primeira coisa a ser executada é o construtor de sua classe super, antes mesmo das declarações.

[]s