O (pseudo-)método construtor determina que ações devem ser executadas quando da criação de um objeto. Em Java, o construtor é definido como um método cujo nome deve ser o mesmo nome da classe e sem indicação do tipo de retorno -- nem mesmo void. O construtor é unicamente invocado no momento da criação do objeto através do operador new.
O retorno do operador new
é uma referência para o
objeto recém-criado. O construtor pode receber argumentos, como
qualquer método. Usando o mecanismo de sobrecarga, mais de um
construtor pode ser definido para uma classe. Veja por exemplo os
construtores definidos
para a classe Point
de Java.
Toda classe tem pelo menos um construtor sempre definido. Se nenhum construtor for explicitamente definido pelo programador da classe, um construtor padrão, que não recebe argumentos, é incluído para a classe pelo compilador Java. No entanto, se o programador da classe criar pelo menos um método construtor, o construtor padrão não será criado automaticamente -- se o programador desejar mantê-lo, deverá criar um construtor sem argumentos explicitamente.
No momento em que um construtor é invocado, a seguinte seqüência de ações é executada para a criação de um objeto:
O espaço para o objeto é alocado e seu conteúdo é inicializado (bitwise) com zeros.
O construtor da classe base é invocado. Se a classe não tem
uma superclasse definida explicitamente, a classe
Object
é a classe base.
Os membros da classe são inicializados para o objeto, seguindo a ordem em que foram declarados na classe.
O restante do corpo do construtor é executado.
Seguir essa seqüência é uma necessidade de forma a garantir que, quando o corpo de um construtor esteja sendo executado, o objeto já terá à disposição as funcionalidades mínimas necessárias, quais sejam aquelas definidas por seus ancestrais. O primeiro passo garante que nenhum campo do objeto terá um valor arbitrário, que possa tornar erros de não inicialização difíceis de detectar.