」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Java 中的建構函式重載

Java 中的建構函式重載

發佈於2024-11-08
瀏覽:211

Constructor Overloading in Java

建構子在初始化類別中扮演至關重要的角色。但您是否知道在 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 類別中:

  • 建構子 1 是一個無參構造函數,用來設定名稱、id 和薪水的預設值。
  • 建構子2允許設定name,id和salary預設為0。
  • 建構子3允許您設定name和id,而salary仍然預設為0。
  • 建構子 4 讓您可以靈活地設定所有三個欄位:姓名、id 和薪水。

例子

以下是如何在 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 提供預設值。

記住

  1. 重載規則:建構子的參數清單必須不同(數量、型別或兩者)。它們不能僅在返回類型上有所不同(構造函數沒有返回類型)。
  2. 預設建構子:如果沒有定義建構函數,Java提供預設的無參構造函數。但是,如果您定義任何建構函數,則不會提供預設建構函數,除非您明確定義它。

構造函數重載的優點

  • 使用者彈性:您班級的使用者可以根據自己的需求以多種方式初始化物件。
  • 簡化程式碼:有助於避免單一建構函式中的長參數列表,提高程式碼可讀性和可維護性。

結論

Java 中的建構函式重載是一種在使用多個建構函式建立類別時提供靈活性和便利性的功能。透過提供多種方法來實例化一個類別。

版本聲明 本文轉載於:https://dev.to/emleons/constructor-overloading-in-java-1c53?1如有侵犯,請洽[email protected]刪除
最新教學 更多>
  • 如何在不使用CSS“not”選擇器的情況下選擇特定元素之外的輸入欄位?
    如何在不使用CSS“not”選擇器的情況下選擇特定元素之外的輸入欄位?
    在沒有「Not」的情況下導覽CSS選擇器:外部輸入欄位選擇在CSS中,「not」選擇器是一個受歡迎的功能這將允許用戶從匹配條件中排除特定元素。目前,除非使用 JavaScript/jQuery,否則此功能在瀏覽器中不可用。 例如,要選擇類別為「classname」的元素中的所有輸入字段,CSS 碼將...
    程式設計 發佈於2024-11-09
  • CSS 形狀:將文字環繞形狀
    CSS 形狀:將文字環繞形狀
    介紹 CSS Shapes 是一個功能強大的工具,可讓設計人員透過操縱 HTML 元素的形狀來創建獨特且具有視覺吸引力的佈局。 CSS Shapes 最令人興奮的功能之一是能夠將文字環繞不同的形狀。這允許更具創意和動態的文字佈局,擺脫傳統的矩形文字區塊。在本文中,我們將探討 CSS...
    程式設計 發佈於2024-11-09
  • 如何維護禁用的選擇元素中的輸入欄位值?
    如何維護禁用的選擇元素中的輸入欄位值?
    在禁用的選擇元素中維護輸入字段值防止用戶修改 表單字段,同時確保提交其值通過利用特定技術來實現。 停用選擇元素和選項One方法是停用選擇元素及其選項。這會阻止使用者與元素交互,從而創建唯讀效果。但是,它也會阻止提交該值。 在提交表單之前啟用元素要解決此問題,請在提交表單之前停用所有已停用的下拉式選單...
    程式設計 發佈於2024-11-09
  • 如何確定 C++ 中動態分配數組的大小?
    如何確定 C++ 中動態分配數組的大小?
    在C 中動態分配後確定數組大小在C 中,使用new 運算子動態分配的數組本質上不會以程式設計方式公開其大小。這個問題源自於這樣的觀察:delete[] 必須知道分配的陣列的大小才能有效地釋放記憶體。 為什麼沒有內建函數來取得陣列大小? 與在堆疊上聲明的數組不同,其大小可以使用 sizeof() 確定...
    程式設計 發佈於2024-11-09
  • Nginx 在 https 埠上強制 http 轉為 https
    Nginx 在 https 埠上強制 http 轉為 https
    範例腳本 nginx : server { listen 443 default ssl; listen [::]:443 ssl; root /var/www/html/api_mobile/public; include snip...
    程式設計 發佈於2024-11-09
  • 解決 PHP 中的命名空間問題:為什麼找不到類別?
    解決 PHP 中的命名空間問題:為什麼找不到類別?
    解決 PHP 自動載入的命名空間問題在 PHP 中使用命名空間和自動載入機制時,經常會遇到無法找到所需類別的錯誤。讓我們探討一下這個錯誤背後的原因並提供解決方案。 如提供的程式碼片段所示,出現錯誤「Class 'Class1' not found」是因為 Class1 類別未在全域範...
    程式設計 發佈於2024-11-09
  • 如何輕鬆將 JavaScript 陣列轉換為逗號分隔清單?
    如何輕鬆將 JavaScript 陣列轉換為逗號分隔清單?
    提升JavaScript:輕鬆將陣列轉換為逗號分隔清單在JavaScript 中處理陣列時,將它們轉換為可讀格式像逗號分隔的清單通常是常見任務。有一個巧妙的方法可以輕鬆實現此目的,而不是訴諸手動字串連接。 Array.prototype.join() 方法介紹陣列。 prototype.join()...
    程式設計 發佈於2024-11-09
  • Java Sound 可以播放 MP3 檔案嗎?
    Java Sound 可以播放 MP3 檔案嗎?
    Java Sound 預設不支援 MP3。對於特定 JRE 中支援的類型,請檢查 AudioSystem.getAudioFileTypes()。 有一種方法可以加入 MP3 支援。將基於 JMF 的 mp3plugin.jar 加入到專案的執行時間類別路徑中。 雖然 javax.sound.sam...
    程式設計 發佈於2024-11-09
  • 如何在 Socket.IO 中阻止發送方接收回應?
    如何在 Socket.IO 中阻止發送方接收回應?
    如何在 Socket.IO 中向發送者以外的所有客戶端發送回應? Socket.IO 提供了一系列的通訊方法用戶端和伺服器。要將訊息傳送到所有客戶端,可以使用 io.sockets.emit('response', data);。但是,當您需要排除發送客戶端接收回應時,這種方法就不夠...
    程式設計 發佈於2024-11-09
  • 如何在 Go 中使用即時請求測試 HTTP 伺服器?
    如何在 Go 中使用即時請求測試 HTTP 伺服器?
    在Go 中使用即時請求測試HTTP 伺服器獨立的單元測試處理程序至關重要,但可能忽略路由和其他中間件的影響。對於全面的測試,請考慮使用“實時伺服器”方法。 使用 httptest.Server 進行即時伺服器測試net/http/httptest.Server 類型有助於即時伺服器測試。它使用提供的...
    程式設計 發佈於2024-11-09
  • 如何在添加數據時自動滾動 Div 到末尾?
    如何在添加數據時自動滾動 Div 到末尾?
    如何在新增資料時自動捲動至Div 的結尾處理動態Web 內容時,通常希望讓div 等元素自動捲動到新增資料時的底部。這是聊天視窗或無限滾動資料表等元素的常見要求。 考慮這樣一個場景:您有一個表格包含在固定高度的 div 中,並且您希望它自動滾動到末尾當添加新資料時。本文探討了實作此行為的 JavaS...
    程式設計 發佈於2024-11-09
  • 如何使用 Laravel Eloquent 取得每個賣家的最新快照?
    如何使用 Laravel Eloquent 取得每個賣家的最新快照?
    用於選擇按賣家分組的最新行的雄辯查詢給定一個包含賣家相關資訊(包括created_at時間戳)的表,通常需要僅檢索每個賣家的最新條目。使用 Laravel Eloquent 可以有效地完成此任務。 為了實現這一目標,我們可以使用 MySQL 子查詢,該子查詢使用左連接和 NULL 匹配來標識每個 s...
    程式設計 發佈於2024-11-09
  • 如何去掉 Go 時間戳記中的「m」字尾?
    如何去掉 Go 時間戳記中的「m」字尾?
    如何在Go 時間戳中排除“m”指示符在Go 中,time.Now() 函數返回一個帶有尾隨“m”後綴表示單調時鐘讀數。對於不需要的特定用例,可以刪除此後綴。 「m」的意思「m」字尾表示掛鐘之間的距離和單調時鐘讀數,以十進位秒錶示。調整掛鐘以保持與外部來源的精確計時,同時單調時鐘穩定遞增而不中斷。 刪...
    程式設計 發佈於2024-11-09
  • 如何安裝和使用Django
    如何安裝和使用Django
    姜戈 Django 是免費開源用Python編寫的網路架構。它遵循模型-模板-視圖架構模式,並由Django 軟體基金會維護。它於 2005 年 7 月 21 日首次發布,並根據 3 條款 BSD 許可證獲得許可。 Django 以其快速開發和乾淨、務實的設計而聞名,使其成為建立 ...
    程式設計 發佈於2024-11-09
  • 有趣的彩色 Codepen
    有趣的彩色 Codepen
    嗨,身為設計師,色彩對我來說真的很重要。 在過去的兩年裡,我收集並創建了一些調色板。但這不是今天貼文的主題。 今天我想分享一些我製作的有趣的彩色筆。 我們走吧… (注意:其中一些可能在行動裝置上不相容。) 1. RGB 顏色滑桿 對此我能說什麼。首先,在我們進一步討論之前,我應...
    程式設計 發佈於2024-11-09

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3