類別 (C# 參考)
類別是使用 class 關鍵字宣告,如下列範例所示:
class TestClass
{
// Methods, properties, fields, events, delegates
// and nested classes go here.
}
備註
不同於 C++,C# 裡只允許單一繼承。 換句話說,類別只能從一個基底類別繼承實作。 但是,類別可以實作一個以上的介面。 下表顯示類別繼承和介面實作的範例:
繼承 |
範例 |
---|---|
無 |
class ClassA { } |
單一 |
class DerivedClass: BaseClass { } |
無繼承,實作兩個介面 |
class ImplClass: IFace1, IFace2 { } |
單一繼承,實作一個介面 |
class ImplDerivedClass: BaseClass, IFace1 { } |
存取層級 protected 和 private 只能在巢狀類別中使用。
您也可以宣告具有型別參數的泛型類別;如需詳細資訊,請參閱泛型類別。
類別可以包含下列成員的宣告:
範例
下列範例示範類別欄位、建構函式和方法的宣告。 它也示範物件執行個體化 (Instantiation) 和列印執行個體資料。 在這個範例裡,宣告了兩個類別,其中 Child 類別包含兩個私用 (Private) 欄位 (name 和 age) 和兩個公用 (Public) 方法。 第二個類別 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 為類別成員的情況下,才可以從 Main 存取 Child 的私用成員。
未使用存取修飾詞在類別中宣告的型別,會預設為 private,所以如果移除了關鍵字,此範例中的資料成員仍會是 private。
最後,請注意對於使用預設建構函式 (child3) 建立的物件,年齡欄位預設會初始化為零。
C# 語言規格
如需詳細資訊,請參閱 C# 語言規格。 語言規格是 C# 語法和用法的決定性來源。