Copiar constructor en Java

Al igual que C++, Java también admite un constructor de copias. Pero, a diferencia de C++, Java no crea un constructor de copia predeterminado si no escribe uno propio. Un requisito previo antes de aprender a copiar constructores es aprender acerca de los constructores en Java hasta raíces más profundas. A continuación se muestra un programa Java de ejemplo que muestra un uso simple de un constructor de copias.

Ejemplo 1A

Java

// Java Program to Illustrate Copy Constructor
 
// Class 1
class Complex {
 
    // Class data members
    private double re, im;
 
    // Constructor 1
    // Parameterized constructor
    public Complex(double re, double im)
    {
 
        // this keyword refers to current instance itself
        this.re = re;
        this.im = im;
    }
 
    // Constructor 2
    // Copy constructor
    Complex(Complex c)
    {
 
        System.out.println("Copy constructor called");
 
        re = c.re;
        im = c.im;
    }
 
    // Overriding the toString() of Object class
    @Override public String toString()
    {
 
        return "(" + re + " + " + im + "i)";
    }
}
 
// Class 2
// Main class
public class Main {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating object of above class
        Complex c1 = new Complex(10, 15);
 
        // Following involves a copy constructor call
        Complex c2 = new Complex(c1);
 
        // Note: Following doesn't involve a copy
        // constructor call
        // as non-primitive variables are just references.
        Complex c3 = c2;
 
        // toString() of c2 is called here
        System.out.println(c2);
    }
}
Producción

Copy constructor called
(10.0 + 15.0i)

Ejemplo 1B

Java

// Java Program to Illustrate Copy Constructor
 
// Class 1
class Complex {
 
    // Class data members
    private double re, im;
 
    // Constructor
    public Complex(double re, double im)
    {
        // this keyword refers to current instance itself
        this.re = re;
        this.im = im;
    }
}
 
// Class 2
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating object of above class
        // inside main() method
        Complex c1 = new Complex(10, 15);
 
        // Note: compiler error here
        Complex c2 = new Complex(c1);
    }
}

Producción:

 

Ahora, en el código anterior, la línea que llama a la función con el objeto c1 como parámetro dará el error ya que el tipo de parámetro en los constructores es de tipo ‘doble’ mientras que el contenido pasado es de tipo ‘objeto’.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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