Java 的面向對象程式設計(OOP)是建立健壯、可維護應用程式的基石。本文系統整理了類別、物件、封裝、繼承、多型等核心概念,並深入解析建構子、存取修飾符、關鍵字(static、final、abstract)、介面、內部類別等進階主題,適合作為進階學習與快速查閱的參考資料。
類別是現實世界中具有相同屬性與行為事物的抽象描述,是建立物件的藍圖。在 Java 中,類別包含屬性(成員變數)與方法(成員函數)。
[修飾符] class 類別名稱 [extends 父類別] [implements 介面名稱] {
// 類別成員變數宣告
// 類別方法宣告
}
物件是類別的具體實例。使用 new 運算子在堆疊記憶體中配置空間,並呼叫建構子完成初始化。
類別名稱 物件名稱 = new 類別名稱(參數列表);
public(任何地方可存取)、預設/package-private(同一套件可存取)。final(不可被繼承)、abstract(抽象類別,不可實例化)。可為基本型別、物件參考或陣列。宣告語法:[修飾符] 型別 變數名稱 [= 初始值];
方法定義類別的功能,語法如下:
[修飾符] 回傳型別 方法名稱(參數列表) [throws 例外清單] {
// 區域變數宣告
// 執行陳述句
[return 回傳值;]
}
方法分為存取屬性的存取器/修改器與業務邏輯方法兩大類。
封裝隱藏內部實作,僅透過公開介面互動。Java 提供四種存取層級:
| 修飾符 | 同類別 | 同套件 | 子類別(不同套件) | 任意類別 |
|---|---|---|---|---|
private | ✓ | ✗ | ✗ | ✗ |
| 預設 | ✓ | ✓ | ✗ | ✗ |
protected | ✓ | ✓ | ✓ | ✗ |
public | ✓ | ✓ | ✓ | ✓ |
最佳實務:屬性設為 private,提供 public getter/setter;方法視需求開放。
類別名.方法名() 呼叫,不可存取非靜態成員。public static final,命名慣例全大寫(如 Math.PI)。String)。介面是完全抽象的類別,僅包含常數(public static final)與抽象方法(public abstract,Java 8+ 可含 default/static 方法)。類別用 implements 實作介面,支援多型與「多重實作」效果,彌補單一繼承限制。
class 子類別 extends 父類別。super 參考父類別成員,this 參考自身。| 特性 | 覆寫 | 多載 |
|---|---|---|
| 發生位置 | 父子類別之間 | 同一類別內部 |
| 方法簽名 | 完全相同 | 名稱相同,參數列表不同 |
| 回傳型別 | 相同或共變型別 | 可不同 |
| 存取權限 | 不可縮小 | 無限制 |
| 多型體現 | 執行期動態綁定 | 編譯期靜態綁定 |
Animal a = new Cat();)。(Cat)a),建議先用 instanceof 判斷。定義在另一個類別內部的類別,可直接存取外部類別的所有成員(含 private)。常見類型:成員內部類別、區域內部類別、匿名內部類別、靜態巢狀類別。
==(參考比較)與 equals()(內容比較)。final 保護不變性。equals() 時必須同步覆寫 hashCode()。掌握 Java OOP 核心概念,不僅能寫出結構清晰、易維護的程式碼,更是深入理解設計模式、框架原理與 JVM 運作的基礎。建議配合大量實作練習,將理論內化為直覺。