Pergunta

O que são Construtores?

Resposta

Construtores são métodos especiais utilizados para realizar a criação de um objeto pertencente a uma certa classe.

Uma classe é um modelo de objetos que podem ser descritos através de certas características (ou estados) e que possuem certas capacidades (ou funcionalidades). Enquanto as características de uma classe, também chamadas de campos ou atributos da classe, são descritas através de variáveis (primitivas ou referências para outros objetos) as capacidades são definidas através de métodos, isto é, funções associadas a classe.

Os construtores são métodos que permitem inicializar um objeto, ou seja, são métodos que preparam o objeto para sua utilização posterior, sendo acionados durante a criação de um objeto pertencente a classe. Os objetos criados são chamados de instâncias da classe sendo que tais objetos compartilham as funcionalidades descritas pela classe embora cada um possua sua própria memória quanto suas características ou estados.

Precisamos criar (instanciar) os objetos para podermos efetivamente utilizá-los em nossos programas, portanto os construtores são os métodos especiais que acionamos para fazer esta "criação" de objetos. No Java os construtores são métodos que possuem o mesmo nome que classe, sendo obrigatoriamente públicos, não possuindo valor de retorno, podendo ou não receber parâmetros. Um exemplo:

public class ExemploDeClasse {
  private int campo;

  public Exemplo() {
    campo = 10;
  }
  public void setCampo(int a) {
    campo = a > 0 ? a : campo;
  }

  public int getCampo() {
    return campo;
  }
}

Na classe ExemploDeClasse utilizada como exemplo temos um campo inteiro privado denominado campo o qual pode ser acessado através dos métodos setCampo e getCampo. A classe também possui um construtor cujo nome é ExemploDeClasse, ou seja, tem o mesmo nome que a classe. Para criarmos um objeto desta classe devemos fazer:

ExemploDeClasse edc = new ExemploDeClasse();

Ou seja:

A partir deste momento podemos usar edc como uma referência para este objeto, o que permite utilizar seus métodos:

// método que lê campo interno da classe
System.out.println("Valor interno: " + edc.getCampo());

// método que escreve (modifica) campo interno da classe
edc.setCampo(23);

Veja também o JavaFaq 0006.