Java 中的复制构造函数是什么?


通常,复制构造函数是一个通过使用先前创建的同一类别的对象,使用对象来初始化该对象从而来创建对象的构造函数。

Java 支持复制构造函数,但与 C 语言不同,Java 不提供显式的复制构造函数,你需要自行定义。

编写复制构造函数

通常,要初始化类的实例变量的值(一种方式)我们创建一个接受所有实例变量的值的参数化构造函数,并使用给定的值来初始化它们。

int name;
int age;
public Student(String name, int age){
   this.name = name;
   this.age = age;
}

但是,复制构造函数接受当前类的对象并将实例变量的值初始化为在获取的对象中的值。

public Student(Student std){
   this.name = std.name;
   this.age = std.age;
}

然后,如果你创建一个对象并通过传递该对象来调用复制构造函数,你将获得你之前创建的对象的副本。

Student std = new Student("nameValue", ageValue);
Student copyOfStd = new Student(std);

示例

以下是一个展示 Java 中复制构造函数的示例。

 在线演示

import java.util.Scanner;
public class Student {
   private String name;
   private int age;
   public Student(String name, int age){
      this.name = name;
      this.age = age;
   }
   public Student(Student std){
      this.name = std.name;
      this.age = std.age;
   }
   public void displayData(){
      System.out.println("Name : "+this.name);
      System.out.println("Age : "+this.age);
   }
   public static void main(String[] args) {
      Scanner sc =new Scanner(System.in);
      System.out.println("Enter your name ");
      String name = sc.next();
      System.out.println("Enter your age ");
      int age = sc.nextInt();
      Student std = new Student(name, age);
      System.out.println("Contents of the original object");
      std.displayData();
      System.out.println("Contents of the copied object");
      Student copyOfStd = new Student(std);
      copyOfStd.displayData();
   }
}

输出

Enter your name
Krishna
Enter your age
20
Contents of the original object
Name : Krishna
Age : 20
Contents of the copied object
Name : Krishna
Age : 20

更新时间: 2019 年 7 月 30 日

4 千+ 查看

开启你的 职业生涯

完成课程即可获得认证

开始
广告