Generalmente, el constructor de copia es un constructor que crea un objeto inicializándolo con un objeto de la misma clase, que ha sido creado previamente.
Java admite constructores de copia, pero a diferencia del lenguaje C, Java no proporciona un constructor de copia explícito que necesita para definirlo usted mismo.
escribir un constructor de copias
Por lo general, para inicializar los valores de las variables de instancia de una clase (unidireccional) creamos un constructor parametrizado que acepta los valores de todas las variables de instancia y las inicializamos con los valores dados.
int name; int age; public Student(String name, int age){ this.name = name; this.age = age; }
Pero, en un constructor de copia, acepte un objeto de la clase actual e inicialice los valores de las variables de instancia con los valores del objeto obtenido.
public Student(Student std){ this.name = std.name; this.age = std.age; }
Luego, si crea un objeto e invoca el constructor de copia pasándolo, obtendrá una copia del objeto que ha creado anteriormente.
Student std = new Student("nameValue", ageValue); Student copyOfStd = new Student(std);
Ejemplo
A continuación se muestra un ejemplo que demuestra los constructores de copia en Java.
Demo en vivo
import java.util.Scanner; public class Student { private String name; private int age; public Student(String name, int age){ this.name = name; this.age = age; } public Student(Student std){ this.name = std.name; this.age = std.age; } public void displayData(){ System.out.println("Name : "+this.name); System.out.println("Age : "+this.age); } public static void main(String[] args) { Scanner sc =new Scanner(System.in); System.out.println("Enter your name "); String name = sc.next(); System.out.println("Enter your age "); int age = sc.nextInt(); Student std = new Student(name, age); System.out.println("Contents of the original object"); std.displayData(); System.out.println("Contents of the copied object"); Student copyOfStd = new Student(std); copyOfStd.displayData(); } }
Producción
Enter your name Krishna Enter your age 20 Contents of the original object Name : Krishna Age : 20 Contents of the copied object Name : Krishna Age : 20
Publicado el 08-Jul-2019 12:02:34