in

¿Qué son los constructores de copias en Java?

user icon

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

raja

Publicado el 08-Jul-2019 12:02:34

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Best VPN for Project Free TV

las 4 mejores opciones en 2020

apple touch icon@2

c – ¿Por qué obtengo un error de afirmación?