O método construtor Java
Criar um objeto com um construtor Java
Emilija Manevska / Getty Images
Um construtor Java cria uma nova instância de um objeto já definido. Este artigo discute como usar métodos construtores Java para criar um objeto Person.
Observação: Você precisa criar dois arquivos na mesma pasta para este exemplo: Pessoa.java define a classe Person, e PersonExample.java contém o método principal que cria objetos Person.
O Método Construtor
Vamos começar criando uma classe Person que tem quatro campos privados: firstName, lastName, address e username. Esses campos são variáveis privadas e seus valores juntos formam o estado de um objeto. Também adicionamos os métodos construtores mais simples:
|_+_||_+_|O método construtor é semelhante a qualquer outro método público, exceto que ele compartilha o mesmo nome da classe e não pode retornar um valor. Pode ter nenhum, um ou muitos parâmetros.
Atualmente, nosso método construtor não faz nada, e é um bom momento para considerar o que isso significa para o estado inicial do objeto Person. Se deixarmos as coisas como estão ou não incluímos um método construtor em nossa classe Person (em Java você pode definir uma classe sem um), então os campos não teriam valores - e certamente queremos que nossa pessoa tenha um nome e endereço, além de outras características. Se você acha que há uma chance de seu objeto não ser usado como você espera e os campos podem não ser inicializados quando o objeto é criado, sempre defina-os com um valor padrão:
|_+_||_+_|Normalmente, para garantir que um método construtor seja útil, nós o projetamos para esperar parâmetros. Os valores passados por esses parâmetros podem ser usados para definir os valores dos campos privados:
|_+_||_+_|Nosso método construtor agora espera que os valores de quatro strings sejam passados para ele. Eles são então usados para definir o estado inicial do objeto. Também adicionamos um novo método chamado exibirPersonDetails() para nos permitir ver o estado do objeto depois que ele foi criado.
Chamando o Método Construtor
Ao contrário de outros métodos de um objeto, o método construtor deve ser chamado usando a palavra-chave 'new':
|_+_||_+_|
Aqui está o que fizemos:
- Para criar a nova instância do objeto Person, primeiro definimos uma variável do tipo Person que conterá o objeto. Neste exemplo, nós o chamamos dave .
- Do outro lado do sinal de igual, chamamos o método construtor de nossa classe Person e passamos quatro valores de string. Nosso método construtor pegará esses quatro valores e definirá o estado inicial do objeto Person como: firstName = 'Dave', lastName = 'Davidson', address = '12 Main St', username = 'DDavidson'.
Observe como mudamos para a classe principal Java para chamar o objeto Person. Quando você trabalha com objetos, os programas abrangem vários arquivos .java . Certifique-se de salvá-los na mesma pasta. Para compilar e executar o programa, basta compilar e executar o Java classe principal arquivo (ou seja, PersonExample.java ). O compilador Java é inteligente o suficiente para perceber que você deseja compilar o Pessoa.java file também porque ele pode ver que você o usou na classe PersonExample.
Nomenclatura de parâmetros
O compilador Java fica confuso se os parâmetros do método construtor tiverem os mesmos nomes dos campos privados. Neste exemplo, você pode ver que distinguimos entre eles prefixando os parâmetros com a palavra 'pessoa'. Vale a pena mencionar que existe outra maneira. Podemos usar a palavra-chave 'this':
|_+_||_+_|A palavra-chave 'this' informa ao compilador Java que a variável à qual será atribuído o valor é aquela definida pela classe, não o parâmetro. É uma questão de estilo de programação, mas esse método nos ajuda a definir os parâmetros do construtor sem precisar usar vários nomes.
Mais de um método construtor
Ao projetar suas classes de objeto, você não está limitado a usar apenas um método construtor. Você pode decidir que há algumas maneiras de inicializar um objeto. A única restrição de usar mais de um método construtor é que os parâmetros devem ser diferentes.
Imagine que no momento em que criamos o objeto Person, talvez não saibamos o nome de usuário. Vamos adicionar um novo método construtor que define o estado do objeto Person usando apenas firstName, lastName e address:
|_+_||_+_|
Observe que o segundo método construtor também é chamado de 'Person' e também não retorna um valor. A única diferença entre ele e o primeiro método construtor são os parâmetros - desta vez ele espera apenas três valores de string: firstName, lastName e address.
Agora podemos criar objetos Person de duas maneiras diferentes:
|_+_||_+_|Pessoa dave será criado com um nome, sobrenome, endereço e nome de usuário. Pessoa Jim, no entanto, não receberá um nome de usuário, ou seja, o nome de usuário será a string vazia: username = ''.
Uma rápida recapitulação
Métodos construtores são chamados apenas quando uma nova instância de um objeto é criada. Elas:
- Deve ter o mesmo nome da classe
- Não retorne um valor
- Não pode ter nenhum, um ou muitos parâmetros
- Pode numerar mais de um desde que cada método construtor tenha um conjunto diferente de parâmetros
- Podem ter nomes de parâmetros o mesmo que os campos privados, desde que a palavra-chave 'this' seja usada
- São chamados usando a palavra-chave 'new'