Copy Constructor in Java

Prerequisite – Constructors in Java
Like C++, Java also supports copy constructor. But, unlike C++, Java doesn’t create a default copy constructor if you don’t write your own.

Following is an example Java program that shows a simple use of copy constructor.

filter_none

edit
close

play_arrow

link
brightness_4
code

// filename: Main.java
  
class Complex {
  
    private double re, im;
      
    // A normal parametrized constructor 
    public Complex(double re, double im) {
        this.re = re;
        this.im = im;
    }
      
    // 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)";
    }
}
  
public class Main {
  
    public static void main(String[] args) {
        Complex c1 = new Complex(10, 15);
          
        // Following involves a copy constructor call
        Complex c2 = new Complex(c1);   
  
        // Note that following doesn't involve a copy constructor call as 
        // non-primitive variables are just references.
        Complex c3 = c2;   
  
        System.out.println(c2); // toString() of c2 is called here
    }
}

chevron_right


Output:

Copy constructor called
(10.0 + 15.0i)



Now try the following Java program:

filter_none

edit
close

play_arrow

link
brightness_4
code

// filename: Main.java
  
class Complex {
  
    private double re, im;
  
    public Complex(double re, double im) {
        this.re = re;
        this.im = im;
    }
}
  
public class Main {
      
    public static void main(String[] args) {
        Complex c1 = new Complex(10, 15);  
        Complex c2 = new Complex(c1);  // compiler error here
    }
}

chevron_right


Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up


Article Tags :
Practice Tags :


6


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.