中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Java中實現實例初始化塊

發布時間:2021-03-02 15:03:03 來源:億速云 閱讀:128 作者:戴恩恩 欄目:編程語言

這篇文章主要為大家詳細介紹了如何在Java中實現實例初始化塊,文中示例代碼介紹的非常詳細,具有一定的參考價值,發現的小伙伴們可以參考一下:

Java是什么

Java是一門面向對象編程語言,可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序。

實例化塊的語法

實例初始化塊一般放在構造函數之前,使用大括號 {} 擴起來的代碼。語法結構一般如下

class JavaTester 
{ 
  // 實例化塊 
  { 
    System.out.println("IIB block"); 
  } 
   
  // 構造函數
  JavaTester() 
  { 
    System.out.println("Constructor Called"); 
  } 
  public static void main(String[] args) 
  { 
    JavaTester a = new JavaTester(); 
  } 
}

注意,實例化塊并不是類的必須。只是一個可選項。用于抽出構造函數的公共部分單獨執行而已。

這段代碼是可以編譯運行的,運行結果如下

[yufei@www.twle.cn java]$ javac JavaTester.java && java JavaTester
IIB block
Constructor Called

一個類中包含多個實例初始化塊

類中的 實例初始化塊 并不是類所必須的,而且,不限數量。一個類既可以沒有實例初始化塊,也可以有多個實例初始化塊。

如果一個類有多個實例初始化塊,那么它們會按照順序從上到下依次執行,也就是說,定義在類頂部的實例初始化塊最先執行。

我們來看一段代碼,下面的類 JavaTester 定義了多個實例初始化塊。

class JavaTester 
{ 
  { 
    System.out.println("IIB1 block 1 "); 
  } 
   
  { 
    System.out.println("IIB2 block 2"); 
  } 
    
  JavaTester() 
  { 
    System.out.println("Constructor Called"); 
  } 
    
  { 
    System.out.println("IIB3 block 3"); 
  } 
   
  public static void main(String[] args) 
  { 
    JavaTester a = new JavaTester(); 
  } 
}

運行上面這段代碼,輸出結果如下

[yufei@www.twle.cn java]$ javac JavaTester.java && java JavaTester
IIB1 block 1 
IIB2 block 2
IIB3 block 3
Constructor Called

父類中的初始化塊

在 Java 語言的繼承體系中,父類同樣可以有初始化塊,而且數量不限。

父類的實例初始化塊在子類的構造函數中調用 super() 之后立即運行。編譯器會在執行當前類的實例初始化塊之前先執行父類的實例初始化塊。

是不是很繞口,我們寫一段代碼來演示下

class B 
{ 
  B() 
  { 
    System.out.println("B-Constructor Called"); 
  } 
  
  { 
    System.out.println("B-IIB block"); 
  } 
  
}
 
public class JavaTester extends B 
{ 
  { 
    System.out.println("JavaTester IIB1 block 1 "); 
  } 
   
  { 
    System.out.println("JavaTester IIB2 block 2"); 
  } 
    
  JavaTester() 
  { 
    super(); 
    System.out.println("JavaTester-Constructor Called");
  } 
    
  { 
    System.out.println("JavaTester IIB3 block 3"); 
  } 
   
  public static void main(String[] args) 
  { 
    JavaTester a = new JavaTester(); 
  } 
}

運行以上范例,輸出結果如下

[yufei@www.twle.cn java]$ javac JavaTester.java && java JavaTester
B-IIB block
B-Constructor Called
JavaTester IIB1 block 1 
JavaTester IIB2 block 2
JavaTester IIB3 block 3
JavaTester-Constructor Called

從運行的結果來看,當創建類 JavaTester 的對象時,編譯器嘗試執行類 JavaTester 的構造函數。但因為它有一個父類,在發現了 super() 語句后,就轉而先執行父類的構造函數。

因此,在繼承體系中,實例初始化塊和構造函數的執行順序如下

執行父類的實例初始化塊

執行父類的構造函數

執行當前類的實例初始化塊

執行當前類的構造函數

實例初始化塊的要點

我們一起來回顧下實例初始化塊的要點。

每次創建新實例時都會運行實例初始化塊

初始化塊按它們在類中出現的順序運行

以上就是億速云小編為大家收集整理的如何在Java中實現實例初始化塊,如何覺得億速云網站的內容還不錯,歡迎將億速云網站推薦給身邊好友。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南丰县| 砚山县| 广安市| 吉木萨尔县| 东安县| 平乐县| 宜州市| 邵武市| 河北区| 驻马店市| 青冈县| 资源县| 通州市| 儋州市| 轮台县| 洪泽县| 重庆市| 桐庐县| 分宜县| 嘉鱼县| 贞丰县| 隆子县| 盈江县| 定西市| 毕节市| 江口县| 巨野县| 屏南县| 玉屏| 青海省| 嘉黎县| 资中县| 泰顺县| 环江| 宜良县| 岱山县| 桑日县| 安阳市| 合水县| 阜宁县| 舞阳县|