复制构造函数可用于在Java中复制对象。复制构造函数采用单个参数,即要复制的同一类的对象。但是,复制构造函数只能由程序员显式创建,因为Java没有提供默认的复制构造函数。
演示此的程序如下所示-
class NumberValue { private int num; public NumberValue(int n) { num = n; } public NumberValue(NumberValue obj) { num = obj.num; } public void display() { System.out.println("The number is: " + num); } } public class Demo { public static void main(String[] args) { NumberValue obj1 = new NumberValue(12); NumberValue obj2 = new NumberValue(obj1); obj1.display(); obj2.display(); } }
输出结果
The number is: 12 The number is: 12
现在让我们了解上面的程序。
使用数据成员num和显示num值的单个成员函数display()创建NumberValue类。类NumberValue中有两个构造函数,其中一个构造函数采用一个int类型的单个参数,另一个是一个拷贝构造函数,该构造函数采用一个单个参数,即NumberNumberValue类的一个对象。演示这的代码片段如下-
class NumberValue { private int num; public NumberValue(int n) { num = n; } public NumberValue(NumberValue obj) { num = obj.num; } public void display() { System.out.println("The number is: " + num); } }
在main()方法中,创建了NumberValue类的对象obj1和obj2,并为它们两者调用了display()方法。演示这的代码片段如下-
public class Demo { public static void main(String[] args) { NumberValue obj1 = new NumberValue(12); NumberValue obj2 = new NumberValue(obj1); obj1.display(); obj2.display(); } }