首頁 > Java > java教程 > 在Java中使用靜態區塊進行建構函式重載

在Java中使用靜態區塊進行建構函式重載

王林
發布: 2023-09-06 14:41:06
轉載
1377 人瀏覽過

在Java中使用靜態區塊進行建構函式重載

實例化物件的行為會呼叫其對應的建構函數,這是物件導向程式設計中許多功能的基礎。值得注意的是,在使用物件的任何程式中,都會無一例外地存在一個預設構造函數 - 編譯器會自動創建,以便無縫地使用。

在本次討論中,我們將深入研究 Java 中靜態區塊的建構子重載。建構函式重載是在一個類別中定義多個具有不同參數的建構函式的概念。

文法

Public class class_name {
   Class_name() {
   }
   Class_name(par1, par2..) {
   }
}
登入後複製

使用帶有靜態區塊的建構函數在物件初始化期間提供了更多的功能和靈活性。

演算法

使用靜態區塊重載建構函數,請依照下列步驟操作 -

  • 第一步 - 建立一個具有不同參數的多個建構函式的類別。

  • 步驟2 - 使用「static」關鍵字建立一個靜態區塊

    這個區塊在類別載入到記憶體時執行一次。

  • 第 3 步- 載入類別時,先執行靜態區塊,然後在建立物件時執行建構函式。

  • 第 4 步 - 將根據提供的參數呼叫建構子。

方法一:定義單獨的靜態區塊

這種方法涉及將靜態區塊和重載建構函數分開定義。

Example

的中文翻譯為:

範例

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
-	-	-		-
登入後複製

說明

在一家公司中,具有任意年數經驗的員工都將在同一家公司工作。因此,如果沒有在公司變數中傳遞任何值,那麼它會自動設定與公司相同的公司名稱。為此,我們使用靜態塊。

方法 2:從建構子呼叫靜態方法

要執行共享初始化程式碼,您可以在類別中聲明靜態方法並從建構函數中呼叫它們。

Example

的中文翻譯為:

範例

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的比較

標準

方法 1

#方法2

類型

單獨的靜態區塊

#從建構子呼叫靜態方法

方法

重複使用具有不同建構函式的常見靜態方法。

獨立的靜態方法與共同的建構子。

方法邏輯

建構子重載與靜態區塊

建構子重載與靜態區塊

結論

雖然方法 2(從建構函式呼叫的靜態方法)在程式碼組織和繼承方面提供了更大的靈活性,但方法 1(具有公共程式碼的多個建構函式)更加獨立且簡單。兩種方法之間的選擇取決於當前專案的特定要求和設計考慮。

以上是在Java中使用靜態區塊進行建構函式重載的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板