10.3. Construtores

Relembre do capítulo 8, que para construir um objeto usamos o operador new seguido do nome da classe que queremos instanciar, seguido de zero ou mais expressões, entre parêntesis, para dar valores aos parâmetros de um dado construtor dessa classe.

A criação de uma instância de uma classe provoca as seguintes ações, executadas em três passos:

  1. reserva e afetação de memória para o objeto (contando com o espaço a ocupar por cada um dos seus atributos);

  2. inicialização desses atributos com valores por omissão:

    • zero para atributos de tipos primitivos numéricos,
    • false para boolean, e
    • null para atributos cujo tipo não é primitivo;
  3. invocação do construtor indicado, sobre o objeto acabado de criar.

O objetivo principal dos construtores é o de inicializar os atributos de um objeto acabado de criar com valores diferentes dos valores por omissão.

Incluímos a definição do construtor que pretendemos, na classe que estamos a construir:

10.3.1. O objeto corrente – this

No corpo de um método, a palavra reservada this representa o objeto corrente – o objeto alvo da invocação do método.

Neste caso, em que this aparece num construtor, ele representa o objeto acabado de criar, aquele sobre o qual o construtor foi invocado.

A palavra this seguida de um ponto e do nome de um atributo, representa o atributo em questão do objeto corrente.

10.3.2. Construindo um objeto

Tal como descrito atrás, a execução da instrução

do método main da classe ClienteDeJogador, tem como efeito

  1. a criação de uma instância de Jogador,
  2. a inicialização dos valores dos seus atributos numéricos a zero e do seu nome a null,
  3. a posterior atribuição, por execução do construtor, dos valores "Maria", 0 e 0 aos seus atributos nome, pontuacao e maximoJogada,
  4. a atribuição, à variável meuJogador, de uma referência para esse objeto.

Repare nas duas últimas instruções do construtor: atribuem o valor zero aos atributos pontuacao e maximoJogada . Na verdade, estas instruções não são necessárias, pois no instante em que são executadas já esses atributos têm o valor zero (o valor que é dado por omissão aos atributos do tipo int). Escolhemos inclui-las para melhor perceção do estado inicial do objeto.

Representamos agora o estado da memória como resultado daquela instrução.

Após os passos 1 e 2:

Após o passo 3:

Após o passo 4:

 


 

Anterior: 10.2. Atributos de instância

Seguinte: 10.4. Métodos que revelam o estado