logo

Construtores em Java

  1. Tipos de construtores
    1. Construtor padrão
    2. Construtor parametrizado
  2. Sobrecarga de construtor
  3. O construtor retorna algum valor?
  4. Copiando os valores de um objeto para outro
  5. O construtor executa outras tarefas em vez da inicialização

Em Java , um construtor é um bloco de códigos semelhante ao método. É chamado quando uma instância do aula é criado. No momento de chamar o construtor, a memória para o objeto é alocada na memória.

É um tipo especial de método usado para inicializar o objeto.

Cada vez que um objeto é criado usando a palavra-chave new(), pelo menos um construtor é chamado.

Ele chama um construtor padrão se não houver nenhum construtor disponível na classe. Nesse caso, o compilador Java fornece um construtor padrão por padrão.

Existem dois tipos de construtores em Java: construtor sem argumentos e construtor parametrizado.

Observação: É chamado de construtor porque constrói os valores no momento da criação do objeto. Não é necessário escrever um construtor para uma classe. É porque o compilador Java cria um construtor padrão se sua classe não tiver nenhum.

Regras para criação de construtor Java

Existem duas regras definidas para o construtor.

converter matriz de bytes em string
  1. O nome do construtor deve ser igual ao nome da classe
  2. Um Construtor não deve ter nenhum tipo de retorno explícito
  3. Um construtor Java não pode ser abstrato, estático, final e sincronizado

Observação: podemos usar modificadores de acesso ao declarar um construtor. Ele controla a criação do objeto. Em outras palavras, podemos ter construtor privado, protegido, público ou padrão em Java.

Tipos de construtores Java

Existem dois tipos de construtores em Java:

  1. Construtor padrão (construtor sem argumento)
  2. Construtor parametrizado
Construtores Java

Construtor padrão Java

Um construtor é chamado de 'Construtor Padrão' quando não possui nenhum parâmetro.

Sintaxe do construtor padrão:

 (){} 

Exemplo de construtor padrão

Neste exemplo, estamos criando o construtor no-arg na classe Bike. Ele será invocado no momento da criação do objeto.
 //Java Program to create and call a default constructor class Bike1{ //creating a default constructor Bike1(){System.out.println('Bike is created');} //main method public static void main(String args[]){ //calling a default constructor Bike1 b=new Bike1(); } } 
Teste agora

Saída:

 Bike is created 

Regra: Se não houver construtor em uma classe, o compilador cria automaticamente um construtor padrão.

Construtor padrão Java

P) Qual é o propósito de um construtor padrão?

O construtor padrão é usado para fornecer os valores padrão ao objeto como 0, nulo, etc., dependendo do tipo.

Exemplo de construtor padrão que exibe os valores padrão

 //Let us see another example of default constructor //which displays the default values class Student3{ int id; String name; //method to display the value of id and name void display(){System.out.println(id+' '+name);} public static void main(String args[]){ //creating objects Student3 s1=new Student3(); Student3 s2=new Student3(); //displaying values of the object s1.display(); s2.display(); } } 
Teste agora

Saída:

 0 null 0 null 

Explicação: Na classe acima, você não está criando nenhum construtor, então o compilador fornece um construtor padrão. Aqui os valores 0 e nulo são fornecidos pelo construtor padrão.


Construtor Java parametrizado

Um construtor que possui um número específico de parâmetros é chamado de construtor parametrizado.

Por que usar o construtor parametrizado?

O construtor parametrizado é usado para fornecer valores diferentes para objetos distintos. No entanto, você também pode fornecer os mesmos valores.

Exemplo de construtor parametrizado

Neste exemplo, criamos o construtor da classe Student que possui dois parâmetros. Podemos ter qualquer número de parâmetros no construtor.

 //Java Program to demonstrate the use of the parameterized constructor. class Student4{ int id; String name; //creating a parameterized constructor Student4(int i,String n){ id = i; name = n; } //method to display the values void display(){System.out.println(id+' '+name);} public static void main(String args[]){ //creating objects and passing values Student4 s1 = new Student4(111,'Karan'); Student4 s2 = new Student4(222,'Aryan'); //calling method to display the values of object s1.display(); s2.display(); } } 
Teste agora

Saída:

 111 Karan 222 Aryan 

Sobrecarga de construtor em Java

Em Java, um construtor é como um método, mas sem tipo de retorno. Também pode ser sobrecarregado como métodos Java.

Construtor sobrecarga em Java é uma técnica de ter mais de um construtor com listas de parâmetros diferentes. Eles são organizados de forma que cada construtor execute uma tarefa diferente. Eles são diferenciados pelo compilador pelo número de parâmetros na lista e seus tipos.

Exemplo de sobrecarga de construtor

 //Java program to overload constructors class Student5{ int id; String name; int age; //creating two arg constructor Student5(int i,String n){ id = i; name = n; } //creating three arg constructor Student5(int i,String n,int a){ id = i; name = n; age=a; } void display(){System.out.println(id+' '+name+' '+age);} public static void main(String args[]){ Student5 s1 = new Student5(111,'Karan'); Student5 s2 = new Student5(222,'Aryan',25); s1.display(); s2.display(); } } 
Teste agora

Saída:

 111 Karan 0 222 Aryan 25 

Diferença entre construtor e método em Java

Existem muitas diferenças entre construtores e métodos. Eles são fornecidos abaixo.

Construtor JavaMétodo Java
Um construtor é usado para inicializar o estado de um objeto.Um método é usado para expor o comportamento de um objeto.
Um construtor não deve ter um tipo de retorno.Um método deve ter um tipo de retorno.
O construtor é invocado implicitamente.O método é invocado explicitamente.
O compilador Java fornece um construtor padrão se você não tiver nenhum construtor em uma classe.O método não é fornecido pelo compilador em nenhum caso.
O nome do construtor deve ser igual ao nome da classe.O nome do método pode ou não ser igual ao nome da classe.

Construtores Java vs. Métodos

Construtor de cópia Java

Não há construtor de cópia em Java. No entanto, podemos copiar os valores de um objeto para outro como o construtor de cópia em C++.

Existem muitas maneiras de copiar os valores de um objeto para outro em Java. Eles são:

  • Por construtor
  • Ao atribuir os valores de um objeto a outro
  • Pelo método clone() da classe Object

Neste exemplo, copiaremos os valores de um objeto para outro usando o construtor Java.

classificação de matriz java
 //Java program to initialize the values from one object to another object. class Student6{ int id; String name; //constructor to initialize integer and string Student6(int i,String n){ id = i; name = n; } //constructor to initialize another object Student6(Student6 s){ id = s.id; name =s.name; } void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student6 s1 = new Student6(111,'Karan'); Student6 s2 = new Student6(s1); s1.display(); s2.display(); } } 
Teste agora

Saída:

 111 Karan 111 Karan 

Copiando valores sem construtor

Podemos copiar os valores de um objeto para outro atribuindo os valores dos objetos a outro objeto. Neste caso, não há necessidade de criar o construtor.

 class Student7{ int id; String name; Student7(int i,String n){ id = i; name = n; } Student7(){} void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student7 s1 = new Student7(111,'Karan'); Student7 s2 = new Student7(); s2.id=s1.id; s2.name=s1.name; s1.display(); s2.display(); } } 
Teste agora

Saída:

 111 Karan 111 Karan 

P) O construtor retorna algum valor?

Sim, é a instância da classe atual (você não pode usar o tipo de retorno, mas ele retorna um valor).


O construtor pode executar outras tarefas em vez da inicialização?

Sim, como criação de objeto, início de thread, chamada de método, etc. Você pode realizar qualquer operação no construtor da mesma forma que executa no método.


Existe classe Construtor em Java?

Sim.


Qual é o propósito da classe Construtor?

Java fornece uma classe Construtora que pode ser usada para obter as informações internas de um construtor na classe. Ele é encontrado no pacote java.lang.reflect.