Java中的复制构造函数

先决条件—— Java中的构造函数 与C++一样,java也支持复制构造函数。但是,与C++不同,java不创建一个默认拷贝构造函数,如果你不自己编写。

null

下面是一个示例Java程序,展示了复制构造函数的简单用法。

JAVA

// filename: Main.java
class Complex {
private double re, im;
// A normal parameterized 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
}
}


输出:

Copy constructor called(10.0 + 15.0i)

现在尝试以下Java程序:

JAVA

// 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
}
}


如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享