通常,复制构造函数是通过使用先前已创建的相同类的对象初始化对象来创建对象的构造函数。
Java支持复制构造函数,但与C语言不同,Java没有提供您需要自己定义的显式复制构造函数。
写一个拷贝构造函数
通常,为了初始化类的实例变量的值(一种方式),我们创建一个参数化的构造函数,接受所有实例变量的值,并使用给定的值对其进行初始化。intname;
intage;
publicStudent(Stringname,intage){
this.name=name;
this.age=age;
}
但是,在复制构造函数中,接受当前类的对象,并使用获取的对象中的值初始化实例变量的值。publicStudent(Studentstd){
this.name=std.name;
this.age=std.age;
}
然后,如果您创建了一个对象并通过传递对象来调用副本构造函数,则将获得您之前创建的对象的副本。Studentstd=newStudent("nameValue",ageValue);
StudentcopyOfStd=newStudent(std);
示例
以下是演示Java中的副本构造函数的示例。importjava.util.Scanner;
publicclassStudent{
privateStringname;
privateintage;
publicStudent(Stringname,intage){
this.name=name;
this.age=age;
}
publicStudent(Studentstd){
this.name=std.name;
this.age=std.age;
}
publicvoiddisplayData(){
System.out.println("Name:"+this.name);
System.out.println("Age:"+this.age);
}
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
System.out.println("Enteryourname");
Stringname=sc.next();
System.out.println("Enteryourage");
intage=sc.nextInt();
Studentstd=newStudent(name,age);
System.out.println("Contentsoftheoriginalobject");
std.displayData();
System.out.println("Contentsofthecopiedobject");
StudentcopyOfStd=newStudent(std);
copyOfStd.displayData();
}
}
输出结果Enteryourname
Krishna
Enteryourage
20
Contentsoftheoriginalobject
Name:Krishna
Age:20
Contentsofthecopiedobject
Name:Krishna
Age:20