第 4 章:對象與類 —— Java 面向對象編程的基石
《Java核心技術 卷Ⅰ 基礎知識》第 4 章系統闡述了類與對象的核心機制。本文提煉重點,結合圖解幫助構建知識骨架。
4.1 類的基本結構
- 字段:描述對象狀態(實例字段、靜態字段)
- 方法:定義對象行為(實例方法、靜態方法)
- 構造器:初始化新對象,名稱與類同,無返回類型

4.2 構造器重載與鏈式調用
- 使用
this(...) 調用本類其他構造器,減少重復代碼
- 構造器中不可調用非 final 實例方法(對象未完全構造)

4.3 訪問修飾符與封裝
| 修飾符 | 同類 | 同包 | 子類(異包) | 非子類(異包) |
| private | ✓ | ✗ | ✗ | ✗ |
| default(無) | ✓ | ✓ | ✗ | ✗ |
| protected | ✓ | ✓ | ✓ | ✗ |
| public | ✓ | ✓ | ✓ | ✓ |
封裝原則:字段 private,提供 public getter/setter,內部邏輯可變不影響調用者。

4.4 靜態字段與靜態方法
- 屬於類而非實例,通过
ClassName.field 訪問
- 靜態方法內不可直接訪問實例字段/方法,無
this 引用
- 常用場景:工具類、單例模式、常量定義、工廠方法

4.5 方法參數傳遞機制:值傳遞
Java 只有值傳遞:
- 基本類型:傳遞值的副本,方法內修改不影響原值
- 引用類型:傳遞引用的副本(地址值),方法內可修改對象內部狀態,但無法讓引用指向新對象

4.6 對象構造過程詳解
- 分配內存,默認初始化字段(0/null/false)
- 按聲明順序執行實例初始化塊與字段顯式初始化
- 執行構造器體代碼
- 構造器返回引用賦值給變量

4.7 包與導入
package 聲明在源文件首行,目錄結構與包名一致
import 靜態導入 import static java.lang.Math.PI; 可直接使用常量/靜態方法
4.8 類設計技巧(Effective Java 風格)
- 類職責單一,接口而非實現編程
- 優先使用不可變類(final 字段、無 setter、防禦性拷貝)
- 組合優於繼承,避免脆弱基類問題
- 慎用繼承,必須滿足「is-a」且子類需訪問父類受保護成員
- 設計文檔化:為繼承而設計,否則禁止繼承(final/class)

本章核心考點速記卡
- 構造器不被繼承,子類構造器首行隱式/顯式調用
super()
- 靜態初始化塊類加載時執行一次,實例初始化塊每 new 一次執行一次
== 比較引用地址,equals() 比較邏輯內容(需重寫)
- 方法重載:同名、參數列表不同;重寫:簽名相同、返回類型协变、拋出異常受限
第 4 章是通往 Java 進階之路的「內功心法」,建議配合《Effective Java》第 2、3 章(創建和銷毀對象、對於所有對象都通用的方法)深度研讀。