元件程式設計非拋棄傳統面向物件,反而為其深化發展。類別作為面向物件靈魂,在 C# 擁有廣泛深入應用,許多「銳利」元件特性直接由類別包裝而成。深度掌握類別自然是「銳利體驗」重要一環。
C# 類別為封裝資料成員、函式成員、巢狀型別的資料結構。資料成員可為常數、欄位。函式成員含方法、屬性、索引器、事件、運算子、實例建構函式、靜態建構函式、解構函式。詳細剖析見第五、六講。除特定外部方法,類別與成員宣告與實現通常放在一起。
C# 多種修飾詞表達類別不同性質。依保護等級五種限制修飾詞:
public:任意存取protected:本類別與繼承子類別存取internal:本組件內所有類別存取。組件為 C# 邏輯與物理單位,編譯後副檔名常為 .DLL 或 .EXE。protected internal:唯一組合限制,本組件所有類別及其繼承子類別存取。private:僅本類別存取非巢狀類別僅有 public、internal 兩種修飾。new 僅用於巢狀類別,表示隱藏繼承父類別同名型別。abstract 修飾抽象類別,僅供繼承不可實例化,可含抽象成員但非必須,不可與 new 並用。sealed 修飾密封類別,禁止繼承,不可與 abstract 並用。
abstract class A { public abstract void F(); }
abstract class B : A { public void G() {} }
class C : B { public override void F() { /* 實作 F */ } }
A 含抽象方法 F,不可實例化。B 繼承 A 但未實作 F,仍須宣告 abstract。C 繼承 B 並實作 F,可實例化。