建構子在初始化類別中扮演至關重要的角色。但您是否知道在 Java 中,一個類別可以有多個建構函式?這個概念稱為建構函數重載,該功能可讓您根據提供的參數以不同的方式建立物件。在本文中,我們將深入探討建構函式重載,探討其好處,並查看實際範例。
建構子重載在Java中意味著同一個類別中有多個建構函數,每個建構函數都有不同的參數列表。構造函數透過其參數的數量和類型來區分。這允許您根據實例化物件時可用的資料來建立具有不同初始狀態的物件。
建構子重載很有用,原因如下:
讓我們考慮一個 Employee 類別的簡單範例,看看建構函式重載在實務上是如何運作的:
public class Employee { private String name; private int id; private double salary; // Constructor 1: No parameters public Employee() { this.name = "Unknown"; this.id = 0; this.salary = 0.0; } // Constructor 2: One parameter (name) public Employee(String name) { this.name = name; this.id = 0; this.salary = 0.0; } // Constructor 3: Two parameters (name and id) public Employee(String name, int id) { this.name = name; this.id = id; this.salary = 0.0; } // Constructor 4: Three parameters (name, id, and salary) public Employee(String name, int id, double salary) { this.name = name; this.id = id; this.salary = salary; } public void displayInfo() { System.out.println("Name: " name ", ID: " id ", Salary: " salary); } }
在上方的 Employee 類別中:
以下是如何在 Main 類別中使用這些建構子的範例:
public class Main { public static void main(String[] args) { // Using the no-argument constructor Employee emp1 = new Employee(); emp1.displayInfo(); // Output: Name: Unknown, ID: 0, Salary: 0.0 // Using the constructor with one argument Employee emp2 = new Employee("Alice"); emp2.displayInfo(); // Output: Name: Alice, ID: 0, Salary: 0.0 // Using the constructor with two arguments Employee emp3 = new Employee("Bob", 123); emp3.displayInfo(); // Output: Name: Bob, ID: 123, Salary: 0.0 // Using the constructor with three arguments Employee emp4 = new Employee("Charlie", 456, 50000.0); emp4.displayInfo(); // Output: Name: Charlie, ID: 456, Salary: 50000.0 } }
Java 也允許您使用 this() 從同一類別中的另一個建構函式呼叫一個建構函式。這稱為 建構子連結 ,對於重用程式碼很有用:
public Employee(String name) { this(name, 0, 0.0); // Calls the constructor with three parameters }
在此範例中,具有一個參數(名稱)的建構函式呼叫具有三個參數的建構函數,為 id 和 salary 提供預設值。
Java 中的建構函式重載是一種在使用多個建構函式建立類別時提供靈活性和便利性的功能。透過提供多種方法來實例化一個類別。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3