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

Java 基礎核心知識體系總結:從對象初始化到異常處理

     編輯:J2ME

一、對象初始化機制深度解析

1. 非靜態對象初始化順序

當創建對象時,執行流程嚴格遵循:

  1. 父類靜態成員初始化(按聲明順序)
  2. 本類靜態成員初始化(按聲明順序)
  3. 父類非靜態成員初始化(按聲明順序)
  4. 父類構造方法執行
  5. 本類非靜態成員初始化(按聲明順序)
  6. 本類構造方法執行

關鍵點:基本類型默認值(int 為 0,boolean 為 false 等);對象引用默認 null;所有成員初始化完成後,才調用構造方法。

2. 靜態對象初始化特點

  • 主類的靜態變量在 main 方法執行前初始化。
  • 首次創建對象時,類中所有靜態變量初始化一次。
  • 首次訪問某類的靜態成員(即使未創建對象),也會觸發該類所有靜態變量按順序初始化。

3. 繼承體系下的完整初始化流程

以 Child extends Parent 為例:

  1. 父類靜態成員初始化
  2. 子類靜態成員初始化
  3. 父類非靜態成員初始化
  4. 父類構造方法執行
  5. 子類非靜態成員初始化
  6. 子類構造方法執行

二、構造方法的規則與限制

  • 類可無構造方法(編譯器生成無參默認構造器);若定義了帶參構造器,必須顯式聲明無參構造器,否則子類無法隱式調用 super()。
  • 構造方法中調用其他構造器(this(...) 或 super(...))必須是第一條語句,且只能調用一次。

三、訪問控制修飾符詳解

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

補充:無 public 修飾的類,僅能被同包類訪問;構造方法若為 private,外部類無法通過 new 創建實例(單例模式常用)。

四、抽象類與接口核心規範

抽象類

  • 不能實例化;包含抽象方法的類必須聲明為 abstract。
  • 子類必須實現所有抽象方法,否則子類也必須是抽象類。
  • 可同時包含抽象方法與非抽象方法;抽象方法不能是 private。
  • 間接繼承的子類可選擇不實現抽象方法(保持抽象)。

接口

  • 所有成員變量隱式為 public static final(常量),必須顯式賦值。
  • 所有方法隱式為 public abstract;實現類中方法必須聲明 public。
  • public 接口文件名必須與接口名一致。
  • 接口可多重繼承(extends 多個接口);類實現接口用 implements,可實現多個接口(逗號分隔)。
  • 類繼承類並實現接口時,先寫父類,後寫接口。

五、final 關鍵字的三重語義

  1. 修飾變量:引用不可變,但對象內部狀態可修改;必須在聲明時或構造器中初始化(空白 final)。
  2. 修飾方法:禁止子類重寫(override)。
  3. 修飾類:禁止被繼承;類中所有方法隱式為 final,但字段可選擇是否為 final。

六、內部類與嵌套接口進階

1. 內部類實例化

非靜態內部類實例需依附外部類實例:

Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();

或在外部類方法中提供工廠方法返回內部類實例。

2. 繼承內部類的構造器調用

class Child extends Outer.Inner {
    Child() {
        new Outer().super(); // 顯式調用外部類實例的 super()
    }
    Child(Outer o) {
        o.super(); // 另一種寫法
    }
}

3. 嵌套接口

  • 接口可嵌套在類中,可用 private 修飾(僅外部類可實現)。
  • 接口中嵌套接口必須為 public。

七、異常處理體系

  • RuntimeException 及其子類(非受檢異常)可不捕獲、不拋出聲明。
  • 除上述外,所有異常(受檢異常)必須捕獲或在方法簽名中用 throws 聲明。

八、多重實現與鑽石繼承注意點

  • 類單繼承、多實現:class A extends B implements C, D。
  • 實現接口時,必須實現該接口及其父接口聲明的所有方法。
  • 接口間多重繼承使用 extends 關鍵字。

總結

掌握初始化順序、構造器鏈、訪問控制、抽象與接口契約、final 語義、內部類實例化機制及異常分類,是寫出健壯、可維護 Java 代碼的基石。建議在實戰中結合反編譯(javap -c)觀察字節碼,深化理解。

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