類別是使用 關鍵詞 class宣告,如下列範例所示:
class TestClass
{
// Methods, properties, fields, events, delegates
// and nested classes go here.
}
備註
C# 只允許單一繼承。 換句話說,類別只能繼承一個基類的實作。 不過,類別可以實作多個介面。 下表顯示類別繼承和介面實作的範例:
| 遺產 | 範例 |
|---|---|
| 沒有 | class ClassA { } |
| 單身 | class DerivedClass : BaseClass { } |
| 無,實作兩個介面 | class ImplClass : IFace1, IFace2 { } |
| 單一,實作一個介面 | class ImplDerivedClass : BaseClass, IFace1 { } |
您直接在命名空間內宣告的類別,而非巢狀於其他類別內,可以是 公用 或 內部類別。 類別預設為 internal 。
類別成員,包括巢狀類別,可以是公用、受保護的內部、受保護的、內部、私人或私人保護。 成員預設為 private 。
如需詳細資訊,請參閱 存取修飾子。
您可以宣告具有類型參數的泛型類別。 如需詳細資訊,請參閱 泛型類別。
類別可以包含下列成員的宣告:
範例
下列範例示範宣告類別字段、建構函式和方法。 它也會示範物件具現化和列印實例數據。 在此範例中,會宣告兩個類別。 第一個類別 Child包含兩個私用字段 (name 和 age),兩個公用建構函式和一個公用方法。 第二個類別 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.
*/
評論
請注意,在上一個範例中,私人欄位 (name 和 age) 只能透過 類別的 Child 公用方法來存取。 例如,您無法使用如下的 語句,從 Main 方法列印子系的名稱:
Console.Write(child1.name); // Error
只有在 Main 是 類別的成員時,才能存取 的私用成員。ChildMain
類別內宣告的型別,不含存取修飾詞預設為 private,因此如果移除 關鍵詞,這個範例中的數據成員仍會 private 是 。
最後,請注意,針對使用無參數建構函式所建立的物件,child3age字段預設會初始化為零。
C# 語言規格
如需詳細資訊,請參閱<C# 語言規格>。 語言規格是 C# 語法和使用方式的最終來源。