類別是 OOP 核心組成元素,用於「封裝」物件屬性與行為。《Code Complete》強調:建立高品質類別,首要步驟是設計良好介面與合理抽象。本文全方位剖析類別特性與實務應用。
Console)與使用者自訂物件(如 Computer 類別)。/// 電腦類別
public class Computer
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public string 主板 = "精英主板";
public string 硬碟 = "希捷硬碟";
public string 記憶體 = "金士頓";
public string 顯示卡 = "七彩虹";
public Computer() { }
public Computer(string name) { this.Name = name; }
}
class Program
{
static void Main(string[] args)
{
Computer zhangsan = new Computer("張三");
Computer lisi = new Computer("李四");
// 比較屬性值(參考同一個類別定義的預設值)
Console.WriteLine(zhangsan.主板 == lisi.主板); // True
}
}
解讀:Computer 是新資料型別,zhangsan/lisi 是該型別的實例(物件)。預設屬性值屬於型別定義,所有實例共享相同初始值。
同名類別透過命名空間區分,如同同名人士透過戶籍地址區分。
實務上將欄位設為 private,對外暴露 get/set 存取子。
class Computer
{
public string Name = "張三"; // 簡易寫法
}
// 使用
Computer computer = new Computer();
Console.WriteLine(computer.Name);
class Computer
{
public Computer() { } // 無參
public Computer(string name) // 重載
{
this.Name = name;
}
private string name;
public string Name { get { return name; } set { name = value; } }
}
類別方法即物件行為,如 TestComputer.Method()。
Computer computer = new Computer("張三");
string name = computer.Name; // 透過實例存取公開成員
// 單一繼承
class B : A { }
// 繼承類別 + 實作介面
class B : A, Ia { }
// 繼承類別 + 實作多介面
class B : A, Ia, Ib { }
public class ClassName { } // 公開
public static class ClassName { } // 靜態類別,不可實例化
public sealed class ClassName { } // 密封,不可繼承
public partial class ClassName { } // 部分類別,跨檔案定義
sealed 防止非預期繼承,partial 協同大型類別開發。