Fala, meus consagrados! Beleza?
Vamos falar em dois artigos sobre os construtores em Java. Os construtores em Java são métodos especiais usados para inicializar objetos de uma classe. Eles possuem o mesmo nome da classe e são chamados automaticamente quando um objeto é criado, garantindo que as variáveis de instância sejam configuradas com valores padrão ou específicos fornecidos pelo desenvolvedor. Iremos estudar tudo isso em dois artigos, começando por este.
Os construtores são chamados para criar objetos a partir de uma classe. Na linguagem Java, usa-se o operador new para criar objetos.
Exemplo:
Classe objeto = new Classe();
Os construtores são blocos declarados com o mesmo nome da classe. A sua declaração parece com as declarações de métodos, porém, os construtores:
- Usam o mesmo nome da classe; e
- Não possuem nenhum tipo de retorno;
- Nem mesmo void é declarado.
Podemos ter vários tipos de construtores em uma classe Java. O construtor padrão (default) não recebe nenhum parâmetro de construtor e possui o corpo vazio. Esse construtor é automaticamente fornecido pelo compilador, pois não é necessário declarar nenhum construtor para uma classe.
Se houver a declaração de pelo menos um construtor para uma classe, o construtor padrão não é mais fornecido.
Exemplo 1:
public class Pessoa {
private String nome;
private String sobrenome;
}
A classe de exemplo não possui construtor explicitamente criado, então é oferecido o construtor padrão para instanciarmos a classe para criação de objetos:
Pessoa joao = new Pessoa();
Exemplo 2:
public class Pessoa {
private String nome;
private String sobrenome;
public Pessoa(String nome, String sobrenome) {
this.nome = nome;
this.sobrenome = sobrenome;
}
}
Já no exemplo acima, foi criado um construtor para ser usado para instanciar a classe. O construtor é público, o que significa que ele pode ser acessado de qualquer lugar onde a classe esteja visível. Isso permite que outras classes em diferentes pacotes criem instâncias da classe Pessoa.
O construtor recebe dois parâmetros, ambos do tipo String. O primeiro parâmetro é nome, e o segundo é sobrenome. Esses parâmetros são utilizados para inicializar os atributos do objeto que está sendo criado.
Dentro do corpo do construtor, o operador this é utilizado. this é uma referência ao objeto atual — o objeto cuja criação o construtor está gerenciando. Usar this aqui é importante para diferenciar entre os parâmetros do construtor e os atributos da classe, pois eles têm o mesmo nome. Então, this.nome = nome; está dizendo “atribua o valor do parâmetro nome ao atributo nome do objeto atual”.
this.nome refere-se ao atributo nome do objeto que está sendo criado, enquanto apenas nome refere-se ao parâmetro passado para o construtor.
Os valores passados para nome e sobrenome quando um novo objeto é instanciado são então atribuídos aos atributos nome e sobrenome do novo objeto, respectivamente. Isso significa que cada novo objeto da classe Pessoa terá seu próprio conjunto de nome e sobrenome.
Em resumo, o construtor da classe Pessoa serve para inicializar um novo objeto com um nome e um sobrenome específicos:
Pessoa kalel = new Pessoa(“Kal-El Gildo”, “Araújo”);
Quando se cria um novo objeto usando new Pessoa(“Kal-El Gildo”, “Araújo”), o construtor garante que o estado interno do objeto – especificamente os atributos nome e sobrenome – seja definido com os valores fornecidos.
A partir do momento que é criado explicitamente um construtor para a classe, o construtor padrão deixará de ser fornecido pelo compilador Java. Ocorrerá um erro de compilação se existir um construtor criado explicitamente para uma classe e tentar instanciar ela usando o construtor padrão.
Podemos criar mais de um construtor para uma classe, ou seja, construtores podem ser sobrecarregados. São construtores com número e tipos de parâmetros diferentes.
É importante citar que não se pode declarar dois construtores com a mesma assinatura.
Exemplo 3:
public class Pessoa {
private String nome;
private String sobrenome;
public Pessoa() {
this.nome = “Kal-El Gildo Araújo”;
}
public Pessoa(String nome) {
this.nome = nome;
}
public Pessoa(String nome, String sobrenome) {
this.nome = nome;
this.sobrenome = sobrenome;
}
}
No exemplo acima, a classe agora possui três construtores sobrecarregados. Ou seja, são construtores com o mesmo nome da classe, mas com a quantidade de parâmetros e/ou tipos de parâmetros diferentes.
Ter mais de um construtor dá oportunidade a um programador de criar e inicializar um objeto de várias formas diferentes. Vamos examinar cada um dos construtores:
Construtor padrão:
public Pessoa() {
this.nome = “Kal-El Gildo Araújo”;
}
Este é o construtor padrão, pois não tem parâmetros. Ele inicializa o atributo nome com um valor fixo: “Kal-El Gildo Araújo”. Se um objeto for criado sem passar nenhum argumento, como em new Pessoa(), este construtor será invocado:
Pessoa kalel = new Pessoa();
Construtor com um parâmetro:
public Pessoa(String nome) {
this.nome = nome;
}
Este construtor aceita um único parâmetro String, nome. Ele inicializa o atributo nome do objeto com o valor que foi passado no parâmetro. Se um objeto for criado com um único argumento String, como em new Pessoa(“Kal-El Gildo”), este construtor será utilizado, configurando o atributo nome do novo objeto para “Kal-El Gildo” e deixando sobrenome com o valor padrão null (porque não foi inicializado):
Pessoa kalel = new Pessoa(“Kal-El Gildo”);
Construtor com dois parâmetros:
public Pessoa(String nome, String sobrenome) {
this.nome = nome;
this.sobrenome = sobrenome;
}
Este construtor aceita dois parâmetros String: nome e sobrenome. Ele inicializa os atributos nome e sobrenome do objeto com os valores passados nos argumentos, respectivamente. Se um objeto for criado com dois argumentos String, como em new Pessoa(“Kal-El Gildo”, “Araújo”), este construtor será chamado, e o novo objeto terá nome definido como “Kal-El Gildo” e sobrenome como “Araújo”:
Pessoa kalel = new Pessoa(“Kal-El Gildo”, “Araújo”);
No próximo artigo, iremos continuar nosso estudo sobre construtores em Java.
Espero que tenham gostado!
Forte abraço e até a próxima jornada!
Quer ficar por dentro dos concursos públicos abertos e previstos pelo Brasil? Clique nos links abaixo:
Receba gratuitamente no seu celular as principais notícias do mundo dos concursos. Clique no link abaixo e inscreva-se: