在面向對象程式設計(OOP)興起之前,幾乎所有程式都採用面向過程(OPP)的方式編寫:程式從入口點開始執行,按順序執行到達目的即結束。這類程式碼修改困難、重複利用率低。OOP 則將世界視為一系列實體(對象)的集合,每個對象封裝了屬性(數據)與行為(方法),極大提升了程式的模組化、可維護性與擴展性。
下表概略對比了兩種範式的核心差異:


若您有 C++ 或 Java 經驗,對「類」與「對象」應不陌生。對象是應用程式的組成單元,封裝了數據與操作該數據的方法;類則是對象的藍圖,定義了成員(字段、屬性)與方法。在 C# 中,類可包含:
// 字段範例
class School
{
public string schoolName; // 公開字段
}
// 屬性範例
class School
{
private string _schoolName; // 私有備份字段
public string SchoolName // 公開屬性
{
get { return this._schoolName; }
set { this._schoolName = value; }
}
}
差異重點:屬性是字段的延伸,提供封裝與驗證機制;字段供類內部使用,屬性供外部存取。
以下程式碼展示一個包含建構函式、方法與屬性操作的 Person 類:
class Person
{
// 字段
public string Name;
public string Sex;
public int Age;
public double Weight;
// 無參數建構函式
public Person()
{
Name = "LFC";
Sex = "man";
Age = 1;
Weight = 10;
}
// 多載建構函式
public Person(string name, string sex, int age, double weight)
{
this.Name = name;
this.Sex = sex;
this.Age = age;
this.Weight = weight;
}
// 方法:進食增加體重
public void EatFood(double quantity)
{
this.Weight += quantity;
}
// 方法:推重物增加體重
public void PushSth(double weight)
{
this.Weight += weight;
}
}
// 使用範例
Person myWife = new Person();
Console.WriteLine(myWife.Weight); // 輸出初始體重
myWife.EatFood(22);
Console.WriteLine(myWife.Weight); // 輸出進食後體重
myWife.PushSth(3.2);
Console.WriteLine(myWife.Weight); // 輸出推重物後體重
本文發表於編程入門網:www.bianceng.cn
未完待續,請先自行練習 Person 類中不理解的部分。