O que é um construtor de cópia em java

O que é um construtor de cópia em java
Em Java, pode haver casos em que o desenvolvedor precisa realocar os valores de acordo com os requisitos. Por exemplo, a atualização das entradas do construtor de tempos em tempos mantém o código intacto. Nesses casos, o “Copiar construtor”Em Java, torna -se útil para modificar as funcionalidades do código de acordo com os requisitos fornecidos.

Este artigo discutirá a utilização do "Copy Constructor" usando Java.

O que é um "construtor de cópia" em Java?

O "Copiar construtor”Corresponde a um construtor que cria/faz um objeto, inicializando -o com o objeto de classe idêntico, criado antes. Para criar um construtor de cópias, o objeto de classe existente é colocado como um argumento e os valores das variáveis ​​de instância são inicializados com os valores acumulados no objeto.

Exemplo 1: Aplicando um "Construtor de Copiar" para copiar os valores de objeto "alocados" em Java

Este exemplo utiliza o “Copiar construtor”Para copiar os valores de objeto alocado de outro objeto criado, envolvendo o objeto alocado como seu argumento:

ClassProfile
Nome da string;
Int Age;
Perfil (nome da string, Int Age)
esse.nome = nome;
esse.idade = idade;

Perfil (perfil ob)
Sistema.fora.println ("Construtor de cópia invocado!");
esse.nome = ob.nome;
esse.idade = ob.idade;

No código de classe acima, aplique as seguintes etapas:

  • Primeiro de tudo, defina uma classe chamada “Perfil”.
  • Em sua definição, especifique as variáveis ​​fornecidas.
  • Depois disso, inclua o construtor de classe compreendendo os parâmetros declarados idênticos aos especificados.
  • Na definição do construtor, consulte as variáveis ​​especificadas via “esse”E atribui -lhes os argumentos passados.
  • Agora, crie um construtor de cópia com o parâmetro declarado.
  • Observação: ““ob”No construtor de cópias aponta para o objeto de classe criado.
  • Em sua definição, da mesma forma, consulte as variáveis ​​especificadas e atribua -lhes os valores já alocados através do objeto passado.

Agora, vamos para as seguintes linhas de código:

classe pública copyCoStructor
public static void main (string args [])
Perfil Object1 = new Perfil ("Harry", 18);
Perfil Object2 = new Perfil (Object1);
Sistema.fora.println ("\ nbe antes da modificação dos valores:");
Sistema.fora.println (objeto1.nome + "" + objeto1.idade);
Sistema.fora.println (objeto2.nome + "" + objeto2.idade);
objeto2.idade = 24;
Sistema.fora.println ("\ nafter modificando valores:");
Sistema.fora.println (objeto1.nome + "" + objeto1.idade);
Sistema.fora.println (objeto2.nome + "" + objeto2.idade);

De acordo com este código:

  • Crie os objetos de classe usando o “novo"Palavra -chave e a"Perfil()”Construtor, respectivamente.
  • O primeiro objeto corresponde ao construtor de primeira classe que compreende os valores declarados.
  • Este último objeto criado refere -se ao construtor de cópias.
  • Agora, exiba os valores de objeto um por um.
  • Neste ponto, ambos os valores de objeto exibem valores idênticos, pois o objeto anterior é embrulhado como o último argumento do construtor (copiado).
  • Na próxima etapa, aloque um novo valor para o último objeto.
  • Por fim, exiba os valores de objeto atualizados após a alocação.

Código inteiro

Perfil da classe
Nome da string;
Int Age;
Perfil (nome da string, Int Age)
esse.nome = nome;
esse.idade = idade;

Perfil (perfil ob)
Sistema.fora.println ("Construtor de cópia invocado!");
esse.nome = ob.nome;
esse.idade = ob.idade;
classe pública copyCoStructor
public static void main (string args [])
Perfil Object1 = new Perfil ("Harry", 18);
Perfil Object2 = new Perfil (Object1);
Sistema.fora.println ("\ nbe antes da modificação dos valores:");
Sistema.fora.println (objeto1.nome + "" + objeto1.idade);
Sistema.fora.println (objeto2.nome + "" + objeto2.idade);
objeto2.idade = 24;
Sistema.fora.println ("\ nafter modificando valores:");
Sistema.fora.println (objeto1.nome + "" + objeto1.idade);
Sistema.fora.println (objeto2.nome + "" + objeto2.idade);

Saída

Nesta saída, pode -se analisar que os valores de objeto alocados são embrulhados no construtor de cópias adequadamente.

Antes de prosseguir para o próximo exemplo, inclua o pacote a seguir para ativar a entrada do usuário:

importar java.util.Scanner;

Exemplo 2: Aplicando um "Construtor de Copiar" para copiar os valores do objeto "Entrada do usuário" em Java

Neste exemplo, o “Copiar construtor”Pode ser aplicado para copiar os valores do objeto de entrada do usuário acumulando o objeto de classe já criado como o argumento do construtor do último objeto:

ClassProfiledata
Nome da string; Int Age;
Profiledata (Nome da String, Int Age)
esse.nome = nome;
esse.idade = idade;
Profiledata (Profiledata ob)
Sistema.fora.println ("Construtor de cópia invocado!");
esse.nome = ob.nome; esse.idade = ob.idade;
voidShow ()
Sistema.fora.println ("O nome é:"+this.nome);
Sistema.fora.println ("A idade é:"+this.idade);
publicClasscopyConstructor2
publicstaticVoidMain (String args [])
Objeto de scanner = novo scanner (sistema.em);
Sistema.fora.println ("Digite o nome:");
Nome da string = objeto.nextline ();
Sistema.fora.println ("Digite a idade:");
int age = objeto.nextInt ();
Profiledata object1 = new Profiledata (nome, idade);
objeto1.mostrar();
Profiledata object2 = new Profiledata (object1);
objeto2.mostrar(); objeto.fechar();

Aplique as etapas a seguir, conforme fornecido nas linhas de código acima:

  • Lembre -se das abordagens discutidas para definir uma classe e incluir o construtor e o construtor de cópias, respectivamente.
  • Depois disso, defina a função chamada “mostrar()”Para exibir os valores de objeto passados.
  • No "principal()”Método, crie um“Scanner“Objeto usando o“novo"Palavra -chave e a"Scanner ()”Construtor, respectivamente.
  • O "Sistema.em”O parâmetro lê a entrada do usuário,“NextLine ()" e a "NextInt ()”Os métodos garantem a entrada do usuário como“Corda", e "Inteiro”, Respectivamente.
  • Agora, crie um objeto de classe chamado “objeto1”Através da abordagem discutida e aprova os valores de entrada do usuário como seus argumentos. Além disso, exiba esses valores através da função de classe invocada “mostrar()”.
  • Na próxima etapa, crie outro objeto de classe e passe o objeto anterior como o argumento do construtor de cópias, de modo que os valores de entrada do usuário se acumularam anteriormente neste objeto.
  • Por fim, exiba os valores usando a função acessada “mostrar()"E fechar o"Scanner”Com a ajuda do associado“fechar()”Método.

Saída

O resultado acima significa que o construtor de cópias é invocado e os valores do objeto são acumulados de acordo.

Conclusão

O "Copiar construtor”Em Java, corresponde a um construtor que cria/faz um objeto, inicializando -o com o mesmo objeto de classe/idêntico, criado antes. Este construtor funciona de modo que o objeto já criado seja envolvido como seu argumento. Este blog foi guiado usando e implementando o “Copiar construtor”Em Java.