類別 (C# 參考)

使用 class 關鍵字宣告類別,如下列範例所示︰

class TestClass
{
    // Methods, properties, fields, events, delegates
    // and nested classes go here.
}

備註

僅允許在 C# 中使用單一繼承。 換句話說,類別可以只從一個基底類別繼承實作。 不過,類別可以實作多個介面。 下表顯示類別繼承和介面實作範例︰

繼承 範例
class ClassA { }
Single class DerivedClass : BaseClass { }
無,實作兩個介面 class ImplClass : IFace1, IFace2 { }
單一,實作一個介面 class ImplDerivedClass : BaseClass, IFace1 { }

直接在命名空間內宣告的類別 (未巢狀在其他類別內) 可以是 publicinternal。 類別預設為 internal

類別成員 (包含巢狀類別) 可以是 publicprotected internalprotectedinternalprivateprivate protected。 成員預設是 private

如需詳細資訊,請參閱存取修飾詞

您可以宣告具有型別參數的泛型類別。 如需詳細資訊,請參閱泛型類別

類別可以包含下列成員的宣告︰

範例

下列範例示範如何宣告類別欄位、建構函式和方法。 它也會示範物件具現化和列印執行個體資料。 在此範例中,宣告兩個類別。 第一個類別 Child,包含兩個私用欄位 (nameage)、兩個公用建構函式和一個公用方法。 第二個類別 StringTest 是用來包含 Main

class Child
{
    private int age;
    private string name;

    // Default constructor:
    public Child()
    {
        name = "N/A";
    }

    // Constructor:
    public Child(string name, int age)
    {
        this.name = name;
        this.age = age;
    }

    // Printing method:
    public void PrintChild()
    {
        Console.WriteLine("{0}, {1} years old.", name, age);
    }
}

class StringTest
{
    static void Main()
    {
        // Create objects by using the new operator:
        Child child1 = new Child("Craig", 11);
        Child child2 = new Child("Sally", 10);

        // Create an object using the default constructor:
        Child child3 = new Child();

        // Display results:
        Console.Write("Child #1: ");
        child1.PrintChild();
        Console.Write("Child #2: ");
        child2.PrintChild();
        Console.Write("Child #3: ");
        child3.PrintChild();
    }
}
/* Output:
    Child #1: Craig, 11 years old.
    Child #2: Sally, 10 years old.
    Child #3: N/A, 0 years old.
*/

註解

請注意,在上述範例中,只能透過 Child 類別的公用方法來存取私用欄位 (nameage)。 例如,您無法使用如下的陳述式,從 Main 方法列印子系的名稱︰

Console.Write(child1.name);   // Error

只有在 Main 已是類別的成員時,才能從 Main 存取 Child 的 private 成員。

類型已宣告在存取修飾詞未預設為 private 的類別內,因此,如果已移除關鍵字,則此範例中的資料成員仍然會是 private

最後,請注意到針對使用無參數建構函式 (child3) 建立的物件,age 欄位預設已初始化為零。

C# 語言規格

如需詳細資訊,請參閱<C# 語言規格>。 語言規格是 C# 語法及用法的限定來源。

另請參閱