首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 核心基礎精華:從物件初始化到異常處理的完整圖譜

     編輯:Java 程式設計入門

一、物件初始化機制詳解

1.1 非靜態物件初始化順序

建立物件時,類別的所有資料成員優先初始化:

  • 基本型別:int 預設為 0,boolean 為 false,引用型別為 null。
  • 成員物件:按宣告順序遞迴初始化。
  • 關鍵點:所有成員初始化完成 之後,才呼叫建構子執行邏輯。建構子的本質職責即是完成初始化收尾工作。

1.2 靜態成員初始化時機

  • 主類別的 static 變數在 main 執行前初始化。
  • 首次建立該類別實例時,所有靜態成員按宣告順序初始化(僅一次)。
  • 首次存取該類別的靜態成員時(即使未建立實例),同樣觸發靜態初始化。

二、繼承體系下的初始化鏈路

採用「自上而下、靜態先於非靜態」原則:

  1. 父類別靜態成員初始化(由基底類向下)。
  2. 子類別靜態成員初始化。
  3. 父類別非靜態成員初始化 → 呼叫父類別預設建構子(遞迴至 Object)。
  4. 子類別非靜態成員初始化。
  5. 呼叫子類別建構子本體。

注意:每層父類別的預設建構子呼叫前,會先完成該層的非靜態成員初始化。

三、建構子設計規範

  • 類別可無建構子(編譯器提供無參預設),但若定義多載建構子,必須顯式保留無參建構子,否則子類別繼承時需強制呼叫父類特定建構子。
  • 建構子間透過 this(...) 呼叫時,必須置於第一行,且每個建構子僅能呼叫一次其他建構子。

四、存取修飾符實戰速查

修飾符同類同包子類(異包)非子類(異包)
public✓✓✓✓
protected✓✓✓✗
default(包私有)✓✓✗✗
private✓✗✗✗

補充:private 建構子可實現單例模式或工廠模式,阻止外部直接 new 實例。

五、抽象類別與介面的核心契約

抽象類別

  • 含 abstract 方法的類別必須宣告為 abstract。
  • 不可實例化,但可包含非抽象方法與建構子(供子類呼叫)。
  • 子類必須實作所有抽象方法,除非子類同為抽象類別。
  • 抽象方法不可為 private(需被子類覆寫)。

介面

  • 所有欄位隱含 public static final(常數),需顯式賦值。
  • 所有方法隱含 public abstract(Java 8 前),實作類方法必須為 public。
  • public 介面檔名需與介面名一致。
  • 介面支援多重繼承(extends 多個介面)。

六、final 關鍵字的三重語義

  1. 變數:引用不可變,但物件內部狀態仍可修改。必須在宣告或建構子中初始化(空白 final)。
  2. 方法:禁止覆寫(override),可被多載(overload)。
  3. 類別:禁止繼承,所有方法隱含 final,但欄位不強制。

七、內部類別與巢狀類別進階

  • 成員內部類:持有外部實例引用,可存取外部 private 成員。建立語法:Outer.Inner in = outer.new Inner()。
  • 靜態巢狀類:無外部引用,類似 C++ 巢狀類。可包含靜態成員與靜態內部類。
  • 區域內部類:定義於方法/區塊內,作用域侷限於該區塊,可存取 final 或 effectively final 區域變數。
  • 匿名內部類:無名稱、無建構子,常用於事件監聽器、策略模式實作。可用實例初始化區塊替代建構子。

八、異常體系核心原則

除 RuntimeException 及其子類(非受檢異常)外,所有異常必須 捕獲 或 拋出宣告(throws)。這是 Java 強制錯誤處理的基石機制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved