核心觀念速覽表
- 介面導向:OOP 關注「物件介面是什麼」,而非「如何實作」。如電源供應器,用戶只在乎能否供電,不關心內部結構。
- 類是藍圖:類是模板,從類建構物件稱為建立實例。
- 封裝:將資料與行為結合,對使用者隱藏實作細節。物件內資料稱為實例欄位。
- 繼承:擴充既有類建立新類,所有類隱含繼承自
Object 根類別。
- 物件三特性:Behavior(能做什麼)、State(狀態回應)、Identity(區分同類物件的唯一標識),三者相互影響。
- 類關係:use-a(依賴)、has-a(聚合)、is-a(繼承,子類擁有父類方法並可擴充)。
- 建構子:特殊方法,建構並初始化物件。特點:同類名、無回傳值、可多載、配合
new 使用。
- 多載:同名方法、不同參數列表,編譯器靜態綁定。
- 套件:組織類別的命名空間,標準庫分層於
java、javax 下。
- 繼承復用:子類繼承父類方法與欄位,可新增自身成員。
- 擴充語法:
class Child extends Parent 體現 is-a 關係。
- 多型:物件變數可指向子類實例,Java 不支援多重繼承。
- 動態綁定:執行期根據實際物件型別決定呼叫哪個方法版本,支援擴充性無需重編譯。
private/static/final 方法為靜態綁定。
- final 類別:禁止被繼承,不可擴充。
- 效能權衡:動態調用比靜態調用耗時略長。
- 抽象類別:含抽象方法的類別必須宣告
abstract,定義規範留待子類實作。
- Object 根類別:所有類別隱含繼承
Object。
- equals & toString:
equals 比較物件相等性;toString 回傳物件字串表現,幾乎所有類別都應覆寫。
- 泛型程式設計:
Object 參考可指向任何類別實例。
- ArrayList:動態陣列,
java.util 套件,自動調整容量。
- Class 物件與反射:
getClass() 取得 Class 實例;反射 (java.lang.reflect) 允許執行期檢查類別結構、操作物件、實作通用演算法,主要供工具開發者使用。
- 反射核心 API:
Field、Method、Constructor。Java 無方法指標,介面是更好的解決方案。
- 介面:定義「該做什麼」而非「如何做」,類別可實作多個介面(
implements)。
- 介面實作步驟:宣告實作介面 + 實作所有介面方法。介面不可實例化。
- 單繼承多實作:一個類別僅有一個父類,但可實作多個介面。重要介面:
Cloneable。
- 回呼模式:指定事件發生時呼叫的方法。典型:
ActionListener、Timer、Toolkit。
- 物件複製:
clone() 為 Object protected 方法,需實作 Cloneable 並覆寫為 public。
- 內部類別:定義於另一個類別內部。優勢:存取外部類私有成員、隱藏實作、便利定義回呼/事件驅動程式。
- Proxy 類別:動態實作指定介面 +
Object 方法。
- 基本資料型別:Java 強型別,8 種基本型別:4 整數、2 浮點、1 字元、1 布林。
重點補充說明
反射機制應用場景
- 框架開發(Spring、Hibernate 等依賴反射掃描註解、實例化 Bean)
- 序列化/反序列化庫
- 動態 Proxy、AOP 實作
- 測試工具、程式碼產生器
介面 vs 抽象類別選擇指南
| 特性 | 介面 | 抽象類別 |
| 多實作 | 一個類別可實作多個 | 單一繼承 |
| 方法實作 | Java 8+ 可有 default/static 方法 | 可包含具體實作 |
| 建構子 | 無 | 有 |
| 欄位 | 僅 static final 常數 | 可有實例/靜態欄位 |
| 適用場景 | 定義契約、能力、跨層級共享行為 | 共享程式碼、提供預設實作、狀態管理 |
掌握這 30 個觀念,奠定 Java 進階開發的堅實基礎。