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

Java 核心基礎:類復用機制全解析(繼承、組合、final、初始化)

     編輯:Java 相關知識

類復用是物件導向的基石。本文系統梳理 toString()、繼承語法、構造器鏈、try-finally、protected、向上轉型、final 語義、類加載初始化順序等核心知識點。

1. toString():物件的字符串名片

所有非基本類型繼承自 Object,擁有 toString()。編譯器在字符串上下文需物件時自動調用。覆寫它可提供有意義的狀態描述。

2. 繼承:extends 與 super

  • 隱式繼承 Object,除非顯式 extends 其他類。
  • super.method() 顯式調用父類實現,構造器中 super(...) 必須首行調用父構造器。
  • 無參父構造器自動調用;有參必須顯式 super(args)。

3. try-finally:資源釋放的保證

try {
  // 受保護區域,可能拋出異常、return、break
} finally {
  // 無論 try 如何退出,必定執行(除非 System.exit/崩潰)
}

適用於關閉流、釋放鎖、清理臨時資源。

4. protected:包內可見 + 子類可見

protected = package-private + 子類存取權。封裝內部細節,同時允許子類擴展。

5. 向上轉型:多態的基石

Instrument.tune(new Wind()); // Wind → Instrument 自動向上轉型
static void tune(Instrument i) { i.play(); } // 動態綁定調用 Wind.play()

「子類是父類的一種」——里氏替換原則的直觀體現。

6. 繼承 vs 組合:如何選擇?

判斷標準:是否必須向上轉型? 必須 → 繼承;否則優先組合(new/has-a),降低耦合,提升靈活性。

7. final 多維語義

場景含義示例
基本類型變量編譯期常量,必須初始化final int MAX = 100;
引用變量引用不可變,物件內容可變final List list = new ArrayList();
方法禁止覆寫,隱含 inline 優化final void critical() {}
類禁止繼承final class Immutable {}
參數方法內不可重新賦值引用void m(final String s) {}
空白 final聲明時不賦值,構造器中必須初始化final int id; {id = generateId();}

8. 類加載與初始化順序

  1. 首次主動使用(new、static 存取、反射)觸發加載。
  2. 遞歸加載父類 → 父類 static 初始化 → 子類 static 初始化。
  3. 實例化:父類構造器 → 父類實例初始化塊/字段 → 子類構造器 → 子類實例初始化塊/字段。

掌握順序,避免 static 循環依賴、字段未初始化被讀取等陷阱。

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