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 千+ 檢視

開啟你的 職業生涯

完成課程即可獲得認證

開始
廣告
© . All rights reserved.