¿Qué es un constructor de copias en Java?

¿Qué es un constructor de copias en Java?
En Java, puede haber casos en los que el desarrollador necesita reasignar los valores según los requisitos. Por ejemplo, la actualización de las entradas del constructor de vez en cuando mantiene el código intacto. En tales casos, el "constructor de copias"En Java se vuelve útil para modificar las funcionalidades del código de acuerdo con los requisitos dados.

Este artículo discutirá la utilización del "constructor de copias" usando Java.

¿Qué es un "constructor de copias" en Java??

El "constructor de copias"Corresponde a un constructor que crea/hace un objeto inicializando con el objeto de clase idéntico, creado antes. Para crear un constructor de copias, el objeto de clase existente se coloca como un argumento y los valores de las variables de instancia se inicializan con los valores acumulados en el objeto.

Ejemplo 1: Aplicar un "constructor de copias" para copiar los valores de objeto "asignados" en Java

Este ejemplo utiliza el "constructor de copias"Copiar los valores de objeto asignados de otro objeto creado envolviendo el objeto asignado como su argumento:

ClassProfile
Nombre de cadena;
int Age;
Perfil (nombre de cadena, int age)
este.nombre = nombre;
este.edad = edad;

Perfil (perfil ob)
Sistema.afuera.println ("Constructor de copia invocado!");
este.nombre = OB.nombre;
este.edad = ob.edad;

En el código de clase anterior, aplique los siguientes pasos:

  • En primer lugar, defina una clase llamada "Perfil".
  • En su definición, especifique las variables proporcionadas.
  • Después de eso, incluya el constructor de clase que comprende los parámetros establecidos idénticos a los especificados.
  • En la definición del constructor, consulte las variables especificadas a través de "este"Y asignarles los argumentos aprobados.
  • Ahora, cree un constructor de copias que tenga el parámetro establecido.
  • Nota: "transmisión exterior"En el constructor de copias apunta al objeto de clase creado.
  • En su definición, del mismo modo, consulte las variables especificadas y asignarles los valores ya asignados a través del objeto aprobado.

Ahora, pasemos a las siguientes líneas de código:

Copyconstructor de clase pública
public static void main (string args [])
Perfil objeto1 = nuevo perfil ("harry", 18);
Perfil objeto2 = nuevo perfil (objeto1);
Sistema.afuera.println ("\ nbefore Modificación de valores:");
Sistema.afuera.println (Object1.Nombre + "" + Object1.edad);
Sistema.afuera.println (Object2.Nombre + "" + Object2.edad);
objeto2.edad = 24;
Sistema.afuera.println ("\ NAFTER MODIFICADO VALORES:");
Sistema.afuera.println (Object1.Nombre + "" + Object1.edad);
Sistema.afuera.println (Object2.Nombre + "" + Object2.edad);

Según este código:

  • Crea los objetos de clase usando el "nuevo"Palabra clave y la"Perfil()"Constructor, respectivamente.
  • El objeto anterior corresponde al constructor de primera clase que comprende los valores establecidos.
  • Este último objeto creado se refiere al constructor de copias.
  • Ahora, muestre los valores de objeto uno por uno.
  • En este punto, ambos valores de objeto muestran valores idénticos ya que el objeto anterior está envuelto como el último argumento del constructor (copiado).
  • En el siguiente paso, asigne un nuevo valor al último objeto.
  • Por último, muestre los valores de objeto actualizados después de la asignación.

Código completo

Perfil de clase
Nombre de cadena;
int Age;
Perfil (nombre de cadena, int age)
este.nombre = nombre;
este.edad = edad;

Perfil (perfil ob)
Sistema.afuera.println ("Constructor de copia invocado!");
este.nombre = OB.nombre;
este.edad = ob.edad;
Copyconstructor de clase pública
public static void main (string args [])
Perfil objeto1 = nuevo perfil ("harry", 18);
Perfil objeto2 = nuevo perfil (objeto1);
Sistema.afuera.println ("\ nbefore Modificación de valores:");
Sistema.afuera.println (Object1.Nombre + "" + Object1.edad);
Sistema.afuera.println (Object2.Nombre + "" + Object2.edad);
objeto2.edad = 24;
Sistema.afuera.println ("\ NAFTER MODIFICADO VALORES:");
Sistema.afuera.println (Object1.Nombre + "" + Object1.edad);
Sistema.afuera.println (Object2.Nombre + "" + Object2.edad);

Producción

En esta salida, se puede analizar que los valores de objeto asignados están envueltos en el constructor de copias adecuadamente.

Antes de continuar con el siguiente ejemplo, asegúrese de incluir el siguiente paquete para habilitar la entrada del usuario:

importar java.utilizar.Escáner;

Ejemplo 2: Aplicar un "Constructor de copia" para copiar los valores del objeto "Entrada del usuario" en Java

En este ejemplo, el "constructor de copias"Se puede aplicar para copiar los valores del objeto de entrada del usuario acumulando el objeto de clase ya creado como el argumento del constructor del último objeto:

ClassProiledata
Nombre de cadena; int Age;
ProfileData (nombre de cadena, int Age)
este.nombre = nombre;
este.edad = edad;
ProfileData (ProfileData OB)
Sistema.afuera.println ("Constructor de copia invocado!");
este.nombre = OB.nombre; este.edad = ob.edad;
voidshow ()
Sistema.afuera.println ("El nombre es:"+esto.nombre);
Sistema.afuera.println ("La edad es:"+esto.edad);
publicClassCopyConstrucor2
publicstaticvoidmain (string args [])
Objeto del escáner = nuevo escáner (sistema.en);
Sistema.afuera.println ("Ingrese el nombre:");
Nombre de cadena = objeto.Proxima linea();
Sistema.afuera.println ("Ingrese la edad:");
int age = objeto.nextInt ();
ProfileData Object1 = nuevo Profiledata (nombre, edad);
objeto1.espectáculo();
ProfileData Object2 = new ProfileData (Object1);
objeto2.espectáculo(); objeto.cerca();

Aplique los siguientes pasos, según lo dispuesto en las líneas de código anteriores:

  • Recuerde los enfoques discutidos para definir una clase e incluir el constructor y el constructor de copias, respectivamente.
  • Después de eso, defina la función llamada "espectáculo()"Para mostrar los valores de objeto pasados.
  • En el "principal()"Método, crea un"Escáner"Objeto usando el"nuevo"Palabra clave y la"Escáner()"Constructor, respectivamente.
  • El "Sistema.en"El parámetro lee la entrada del usuario", "Proxima linea()" y el "nextInt ()"Los métodos aseguran la entrada del usuario como"Cadena", y "Entero", Respectivamente.
  • Ahora, cree un objeto de clase llamado "objeto1"A través del enfoque discutido y aprobar los valores de entrada del usuario como sus argumentos. Además, muestre estos valores a través de la función de clase invocada "espectáculo()".
  • En el siguiente paso, cree otro objeto de clase y pase el objeto anterior como argumento del constructor de copias de modo que los valores de entrada del usuario se acumularan previamente en este objeto.
  • Por último, muestre los valores utilizando la función accedida "espectáculo()"Y cierre el"Escáner"Con la ayuda de lo asociado"cerca()" método.

Producción

El resultado anterior significa que se invoca el constructor de copias y los valores del objeto se acumulan en consecuencia.

Conclusión

El "constructor de copias"En Java corresponde a un constructor que crea/hace un objeto al inicializarlo con el mismo objeto de clase/idéntico, creado antes. Este constructor funciona de tal manera que el objeto ya creado está envuelto como su argumento. Este blog guió el uso e implementación del "constructor de copias"En Java.