Na programação orientada a objetos, um construtor é uma função especial que você chama para criar um objeto. Os construtores têm vários recursos exclusivos que os permitem trabalhar.

Em Java, você nomeia um construtor de acordo com sua classe. Um construtor é um método, definido na classe a que se aplica. Os construtores Java podem usar sobrecarga para fornecer comportamento alternativo. Construtores em Java também podem fazer uso de herança para reutilizar código.

Por que você precisa de construtores?

Os construtores são um pilar de programação orientada a objetose Java não é exceção. Este exemplo mostra como você pode definir uma classe Circle básica com uma propriedade de dados e um método:

public class Circle {
raio público duplo;
área pública dupla () {return 3,14159 * raio * raio; }
}

Você pode então criar uma instância desta classe e interagir com ela:

Círculo c = novo Círculo ();
c.radius = 2;
System.out.println (c.area ()); // 12.56636

Mas isso é menos conveniente e robusto do que poderia ser. É uma boa prática orientada a objetos encapsular dados, protegendo-os de acesso não autorizado:

instagram viewer

public class Circle {
privado raio duplo;
área pública dupla () {return 3,14159 * raio * raio; }
public void setRadius (double r) {radius = r; }
}

Agora, o código de chamada pode usar o setRadius método e não precisa se preocupar com seus detalhes de implementação:

Círculo c = novo Círculo ();
c.setRadius (2);

Os construtores oferecem uma maneira ainda melhor de fornecer dados a um objeto ao criá-lo. Eles são frequentemente usados ​​para a inicialização de propriedades, como o raio aqui.

Exemplos de construtores simples

O construtor mais básico é aquele sem argumentos, que não faz nada:

public class Circle {
círculo público () {}
}

Veja também: Aprenda a criar classes em Java

Se você não definir um construtor, Java fornecerá um padrão que se comporta da mesma maneira.

Observe algumas coisas:

  1. O nome do construtor corresponde ao nome da classe.
  2. Este construtor usa o público modificador de acesso, então qualquer outro código pode chamá-lo.
  3. Um construtor não inclui um tipo de retorno. Ao contrário de outros métodos, os construtores não podem retornar um valor.

Os construtores normalmente realizam algum tipo de inicialização. Observe que o código acima não inicializa o valor de radius. Nesse caso, o idioma será automaticamente definido como zero. Esta classe espera que um usuário use setRadius (). Para usar um padrão mais útil do que 0, você pode atribuí-lo dentro do construtor:

public class Circle {
círculo público () {raio = 1; }
}

Os círculos criados com esta classe agora terão, pelo menos, uma área real! O chamador ainda pode usar setRadius () para fornecer um raio diferente de 1. Mas o construtor pode ser ainda mais amigável:

public class Circle {
Círculo público (duplo r) {raio = r; }
}

Agora você pode criar círculos com um raio específico desde o nascimento:

Círculo c = novo círculo (2);
System.out.println (c.area ()); // 12.56636

Este é um uso muito comum para construtores. Freqüentemente, você os usará para inicializar variáveis ​​para valores de parâmetro.

Sobrecarga do construtor

Você pode especificar mais de um construtor em uma definição de classe:

círculo público () {raio = 1; }
Círculo público (duplo r) {raio = r; }

Isso dá ao código de chamada uma escolha de como construir objetos:

Círculo c1 = novo círculo (2);
Círculo c2 = novo Círculo ();
System.out.println (c1.area () + "," + c2.area ()); // 12.56636, 3.14159

Com um círculo um pouco mais complexo, você pode explorar construtores mais interessantes. Esta versão armazena sua posição:

public class Circle {
duplo público x, y, raio;
círculo público () {raio = r; }
Círculo público (duplo r) {raio = r; }
Círculo público (duplo x, duplo y, duplo r) {
this.x = x; this.y = y; raio = r;
}

área pública dupla () {return 3,14159 * raio * raio; }
}

Agora você pode criar um círculo sem argumentos, um único raio ou coordenadas xey ao longo do raio. Este é o mesmo tipo de sobrecarga que o Java suporta para qualquer método.

Encadeamento de Construtor

Que tal criar um Círculo baseado em outro? Isso nos daria a capacidade de copiar Círculos facilmente. Observe o seguinte bloco:

Círculo público (Círculo c) {
this.x = c.x;
this.y = c.y;
this.radius = c.radius;
}

Isso funcionará, mas repete parte do código desnecessariamente. Uma vez que a classe Circle já tem um construtor que lida com as propriedades individuais, você pode chamá-lo em vez de usar o esta palavra-chave:

Círculo público (Círculo c) {
este (c.x, c.y, c.radius);
}

Esta é uma forma de encadeamento de construtor, chamando um construtor de outro. Ele usa menos código e ajuda a centralizar uma operação, em vez de duplicá-la.

Chamando o construtor pai

A outra forma de encadeamento de construtor ocorre quando um construtor chama um construtor de sua classe pai. Isso pode ser explícito ou implícito. Para chamar um construtor pai explicitamente, use o super palavra-chave:

super (x, y);

Imagine uma classe Shape atuando como pai do Círculo:

public class Shape {
duplo x, y;
forma pública (_x duplo, _y duplo) {x = _x; y = _y; }
}

Ele lida com o posicionamento comum para todas as formas, pois essa é a funcionalidade que todos compartilham. Agora a classe Circle pode delegar tratamento de posição a seu pai:

classe pública Círculo estende a forma {
raio duplo;
Círculo público (duplo r) {super (0, 0); raio = r; }
Círculo público (duplo x, duplo y, duplo r) {
super (x, y);
raio = r;
}
}

A construção da superclasse é um aspecto muito importante da herança em Java. A linguagem o impõe por padrão, se você não chamar explicitamente super em seus construtores.

Modificadores de acesso em construtores

Os construtores podem incluir um modificador de acesso em sua assinatura. Como outros métodos, isso define quais tipos de chamador podem acessar o construtor:

public class Test {
Teste estático privado uniqueInstance = new Test ();
Teste privado () {}
public static Test getInstance () {
return uniqueInstance;
}
}

Este é um exemplo mais complicado, então tome cuidado para entendê-lo:

  • A classe não é abstrata, portanto, é possível instanciá-la.
  • O construtor é privado, portanto, apenas essa classe pode criar uma nova instância.
  • Por meio de uma propriedade e método estáticos, a classe expõe uma instância única e exclusiva de si mesma aos chamadores.

Use construtores em Java para criar objetos

Construtores são vitais para a programação orientada a objetos. Eles permitem que você crie objetos, o que é essencial!

Em Java, os construtores se parecem com outros métodos e funcionam da mesma maneira. Você deve se lembrar das regras especiais sobre construtores padrão, sobrecarga e encadeamento de construtor. Se os construtores são novos para você, você pode querer ler sobre os outros conceitos básicos do Java que deve aprender ao começar.

E-mail
10 conceitos básicos de Java que você deve aprender ao começar

Esteja você escrevendo uma GUI, desenvolvendo software do lado do servidor ou um aplicativo móvel usando Android, aprender Java será muito útil. Aqui estão alguns conceitos básicos do Java para ajudá-lo a começar.

Leia a seguir

Tópicos relacionados
  • Programação
  • Java
  • Dicas de codificação
Sobre o autor
Bobby Jack (51 artigos publicados)

Bobby é um entusiasta da tecnologia que trabalhou como desenvolvedor de software por quase duas décadas. Ele é apaixonado por jogos, trabalha como Editor de Críticas na Switch Player Magazine e está imerso em todos os aspectos da publicação online e desenvolvimento web.

Mais de Bobby Jack

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Mais um passo…!

Confirme o seu endereço de e-mail no e-mail que acabamos de enviar.

.