ExpertiDict

Java · Avançado · Português · Técnico

ordem de inicialização

/ˈɔɾdẽj dʒi inisjalizaˈsɐ̃w/substantivo

Sequência em que Java prepara classes e objetos: estáticos do pai, estáticos do filho, depois instância e construtor do pai, e instância e construtor do filho.

Onde usar

Aparece em bugs onde o construtor do pai chama um método sobrescrito que lê um campo do filho ainda não inicializado, e vê null ou zero.

Em código

class Pai {
  Pai() { iniciar(); }
  void iniciar() {}
}
class Filho extends Pai {
  String nome = "Ana";
  void iniciar() { System.out.print(nome); }
} // new Filho() imprime null

Exemplos

O campo veio null por causa da ordem de inicialização.

Não chama método sobrescrito no construtor do pai.

Cuidado

Chamar método sobrescrito no construtor é uma armadilha: o campo do filho ainda tem o valor padrão.

Veja também

Todos os termos de Java