首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 基礎:類別結構、成員與存取修飾詞完整指南

     編輯:關於C語言

類別本質

類別是建立物件的模板。定義物件可包含的資料(欄位/屬性)與功能(方法/事件),但類別本身不儲存資料。實例化後每個物件擁有獨立資料副本。

類別成員分類

成員類型關鍵字/語法用途
常數const編譯期固定值,隱含 static
欄位public int x;儲存實例/靜態資料
方法void Foo()執行計算與操作
屬性int Prop { get; set; }封裝欄位讀寫,可含邏輯
事件event EventHandler E;發佈/訂閱通知機制
索引器this[int i] { get; set; }像陣列一樣存取實例
運算子operator +(A,B)定義類型專屬運算
建構函式Class()初始化實例
解構函式~Class()釋放非託管資源 (罕用)

存取修飾詞完整對照

修飾詞訪問範圍適用目標
public無限制類別、成員
protected本類別 + 衍生類別成員
internal同一組件類別、成員
protected internal同一組件 OR 衍生類別成員
private僅本類別成員
private protected同一組件內的衍生類別成員 (C# 7.2+)

類別修飾詞

修飾詞含義
new巢狀類別隱藏基類同名成員
abstract不可實例化,供繼承,可含抽象成員
sealed不可被繼承
static僅含靜態成員,不可實例化、不可繼承
partial跨檔案定義

方法修飾詞

修飾詞含義
virtual允許衍生類別 override
override重寫虛擬/抽象方法
abstract無實作,強制衍生類實作
extern外部非託管實作 (配合 DllImport)
static屬於類別,非實例

靜態 vs 非靜態成員

class Test
{
    int x;        // 非靜態:屬於實例
    static int y; // 靜態:屬於類別

    void F() { x = 1; y = 1; }           // 實例方法:可存取 x、y
    static void G() { /*x = 1;*/ y = 1; } // 靜態方法:不可存取 x (無 this)

    static void Main()
    {
        Test t = new Test();
        t.x = 1;   // 正確
        // t.y = 1; // 錯誤:實例不可存取靜態成員
        // Test.x = 1; // 錯誤:類別不可存取非靜態成員
        Test.y = 1;  // 正確
    }
}

繼承存取實戰

class Vehicle
{
    public int Wheels;
    protected float Weight;
}

class Train
{
    private float Weight; // 自有私有欄位
    void F()
    {
        Vehicle v = new Vehicle();
        v.Wheels = 4;      // OK: public
        // v.Weight = 6;   // 錯誤: protected 不可從外部存取
        Weight = 6;        // OK: 存取自有私有欄位
    }
}

class Car : Vehicle
{
    void F()
    {
        Vehicle v = new Vehicle();
        v.Wheels = 4;      // OK: public
        v.Weight = 6;      // OK: 衍生類可存取基類 protected
    }
}

internal 成員特性

同一組件內可見,組件外不可見。常用於組件內部協作類別,避免暴露為公共 API。

總結

掌握類別成員分類、存取修飾詞、靜態/非靜態語義、繼承存取規則,是設計良好封裝、符合開放封閉原則類別架構的基礎。實務上建議:預設 private、按需放寬;欄位永遠 private,對外暴露屬性;慎用 protected,優先考慮組合而非繼承。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved