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); } }
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