先决条件—— 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