現實世界錯綜複雜,人類透過分類建立秩序:汽車、貓、花。每類擁有狀態 (品牌、速度、毛色) 與行為 (啟動、捉老鼠、盛開)。OOP 將此映射為 類別 = 資料 (欄位/屬性) + 行為 (方法),使程式設計貼近人類思維。
汽車引擎運作原理被封裝在引擎蓋下,駕駛只需操作方向盤、踏板 (介面)。類別同理:
private 隱藏public 形成介面效益:降低認知負荷、實作可隨時重構、介面不變即不影響呼叫端。
白熾燈換螢光燈:原理不同、功能同、介面同 (E27 燈座) → 直接替換。類別亦然:
| 類別 (抽象) | 物件 (具體) |
|---|---|
| 人 | 司馬遷、李白、杜甫 |
| 首都 | 北京、倫敦、華盛頓 |
| 動畫貓 | Kitty、Garfield、Doraemon |
狀態屬於物件,行為由物件發出:說「Kitty 體重 1.5kg」非「貓類體重 1.5kg」;說「劉翔奪冠」非「人類奪冠」。
// 類別定義
public class Cat {
public string Name { get; set; }
public double Weight { get; set; }
public void Meow() => Console.WriteLine($"{Name}: 喵~");
}
// 建立物件 (實例化)
var kitty = new Cat { Name = "Kitty", Weight = 1.5 };
var garfield = new Cat { Name = "Garfield", Weight = 5.0 };
// 使用物件
kitty.Meow(); // Kitty: 喵~
garfield.Meow(); // Garfield: 喵~
類別是藍圖,物件是建築。封裝守護內部、介面定義契約、物件承載狀態與行為。這三個概念是所有 OOP 設計的起點,亦是通往設計模式、架構師之路的基石。