實例化物件的行為會呼叫其對應的建構函數,這是物件導向程式設計中許多功能的基礎。值得注意的是,在使用物件的任何程式中,都會無一例外地存在一個預設構造函數 - 編譯器會自動創建,以便無縫地使用。
在本次討論中,我們將深入研究 Java 中靜態區塊的建構子重載。建構函式重載是在一個類別中定義多個具有不同參數的建構函式的概念。
Public class class_name { Class_name() { } Class_name(par1, par2..) { } }
使用帶有靜態區塊的建構函數在物件初始化期間提供了更多的功能和靈活性。
使用靜態區塊重載建構函數,請依照下列步驟操作 -
第一步 - 建立一個具有不同參數的多個建構函式的類別。
步驟2 - 使用「static」關鍵字建立一個靜態區塊
這個區塊在類別載入到記憶體時執行一次。
第 3 步- 載入類別時,先執行靜態區塊,然後在建立物件時執行建構函式。
第 4 步 - 將根據提供的參數呼叫建構子。
這種方法涉及將靜態區塊和重載建構函數分開定義。
Class Class_name{ Static { } Public class_name(){ } Public class_name(int value) { } Public class_name(string name) { } //Other methods }
在這種方法中,類別可以具有具有不同參數列表的重載建構函數,其中還包括初始化程式碼。還有一個單獨的靜態區塊用於類別的靜態初始化。該區塊將被執行一次。
在這個範例中,我們將展示方法1
class Emp { int id, exp;String name;static String company; static { company = "XYZ Corp"; } public Emp(){ System.out.println("-" + "\t" + "-" + "\t" + "-" + "\t" + "\t" + "-"); } public Emp(int id, String name){ System.out.println(id + "\t" + name + "\t" + company + "\t" + exp); } public Emp(int id, String name, int exp) { System.out.println(id + "\t" + name + "\t" + company + "\t" + exp); } } public class Way2Class { public static void main(String[] args) { System.out.println("Id" + "\t" + "Name" + "\t" + "Company" + "\t" + "Exp"); Emp obj1 = new Emp(001, "Apoorva"); Emp obj2 = new Emp(004, "Anu", 10); Emp obj3 = new Emp(); } }
Id Name Company Exp 1 Apoorva XYZ Corp 0 4 Anu XYZ Corp 10 - - - -
在一家公司中,具有任意年數經驗的員工都將在同一家公司工作。因此,如果沒有在公司變數中傳遞任何值,那麼它會自動設定與公司相同的公司名稱。為此,我們使用靜態塊。
要執行共享初始化程式碼,您可以在類別中聲明靜態方法並從建構函數中呼叫它們。
public class Way2Class { private int value; private String name; private static void initialize() { System.out.println("Common initialization code"); } public Way2Class() { initialize(); value = 0; name = "Default"; System.out.println("No-arg constructor called"); } public Way2Class(int value) { initialize(); this.value = value; name = "Value"; System.out.println("Int constructor called"); } public Way2Class(String name) { initialize(); value = 0; this.name = name; System.out.println("String constructor called"); } public static void main(String[] args) { Way2Class obj1 = new Way2Class(); Way2Class obj2 = new Way2Class(10); Way2Class obj3 = new Way2Class("Hello"); } }
Common initialization code No-arg constructor called Common initialization code Int constructor called Common initialization code String constructor called
本圖中的 Way2Class 類別包含三個建構函數,每個建構函數都會呼叫靜態的initialize () 方法來執行共享的初始化程式碼。每個建構函式都會呼叫類別內指定的靜態函式initialize()。根據給定的參數,在物件建立過程中呼叫適當的建構函數,並使用靜態方法initialize()來執行公共初始化程式碼。
標準 |
方法 1 |
#方法2 |
---|---|---|
類型 |
單獨的靜態區塊 |
#從建構子呼叫靜態方法 |
方法 |
重複使用具有不同建構函式的常見靜態方法。 |
獨立的靜態方法與共同的建構子。 |
方法邏輯 |
建構子重載與靜態區塊 |
建構子重載與靜態區塊 |
雖然方法 2(從建構函式呼叫的靜態方法)在程式碼組織和繼承方面提供了更大的靈活性,但方法 1(具有公共程式碼的多個建構函式)更加獨立且簡單。兩種方法之間的選擇取決於當前專案的特定要求和設計考慮。
以上是在Java中使用靜態區塊進行建構函式重載的詳細內容。更多資訊請關注PHP中文網其他相關文章!