在物件導向程式設計(OOP)的世界裡,類與物件是構建應用程式的基石。Java 作為一門純粹的物件導向語言,其核心思想在於將資料與操作資料的方法封裝在一起,形成可復用、可維護的模組。本文將系統性地剖析 Java 中類的定義、欄位與方法、物件的建立與記憶體模型,以及類之間的關係,助你建立扎實的 OOP 基礎。
類是建立物件的模板,描述了一組具有相同屬性與行為的物件共同特徵。打個比方:類就像建築藍圖,而物件則是根據藍圖建造出來的實體建築。在 Java 中,使用 class 關鍵字定義類:
public class Person {
// 類的主體內容:欄位、建構子、方法等
}
類的主體主要包含兩類成員:
class Person {
String name; // 物件引用,需初始化
double salary; // 基本型別,可直接賦值
}
每個物件擁有獨立的欄位儲存空間,互不共享。
返回類型 方法名(參數列表) {
// 方法體
}
呼叫方式為 物件名.方法名()。
使用 new 關鍵字在堆上分配記憶體並呼叫建構子初始化:
Person p = new Person(); // p 是指向 Person 物件的引用(句柄)
注意:宣告引用變數 String s; 並未建立物件,需初始化(s = "hello" 或 s = new String("hello"))才能使用,否則會拋出空指標異常。
類的成員變數若未顯式初始化,Java 會自動賦予預設值:
| 型別 | 預設值 |
|---|---|
| boolean | false |
| char | '\u0000' |
| byte/short/int | 0 |
| long | 0L |
| float | 0.0f |
| double | 0.0d |
| 引用型別 | null |
區域變數則無預設值,使用前必須初始化。
Java 程式執行時,資料分佈在不同的記憶體區域:
new 出來的物件,由垃圾回收器管理,靈活但存取稍慢。static 修飾的成員,程式啟動時分配,結束時釋放。將資料與操作資料的方法綁定,對外隱藏實作細節。類的欄位通常設為 private,提供 public 的 getter/setter 方法控制存取,確保資料完整性。
Java 中物件變數實際上都是引用,new 回傳的也是引用,物件本身永遠在堆上。
掌握類與物件是精通 Java 的關鍵。從類的定義、實例化、記憶體佈局到封裝與類關係,每一環都體現了 OOP 的核心思想:高內聚、低耦合。實戰中,善用封裝保護資料,合理設計類層級結構,才能寫出健壯、可擴充的系統。