class (C#-Referenz)
Klassen werden wie im folgenden Beispiel mit dem class-Schlüsselwort deklariert:
class TestClass
{
// Methods, properties, fields, events, delegates
// and nested classes go here.
}
Hinweise
Im Gegensatz zu C++ ist in C# nur die einfache Vererbung zulässig. Dies bedeutet, dass eine Implementierung nur von einer Basisklasse an eine Klasse vererbt werden kann. Eine Klasse kann jedoch mehr als eine Schnittstelle implementieren. In der folgenden Tabelle sind Beispiele für Klassenvererbung und Schnittstellenimplementierung aufgeführt:
Vererbung |
Beispiel |
---|---|
None |
class ClassA { } |
Single |
class DerivedClass: BaseClass { } |
Keine, Implementierung von zwei Schnittstellen |
class ImplClass: IFace1, IFace2 { } |
Einfache, Implementierung einer Schnittstelle |
class ImplDerivedClass: BaseClass, IFace1 { } |
Die Zugriffsebenen protected und private sind nur in geschachtelten Klassen zulässig.
Sie können auch generische Klassen deklarieren, die über Typparameter verfügen. Weitere Informationen finden Sie unter Generische Klassen.
Eine Klasse kann Deklarationen der folgenden Member umfassen:
Beispiel
Im folgenden Beispiel wird erläutert, wie Klassenfelder, Konstruktoren und Methoden deklariert werden. Zusätzlich wird die Objektinstanziierung sowie die Ausgabe von Instanzdaten veranschaulicht. In diesem Beispiel werden zwei Klassen deklariert: die Klasse Child, die zwei private Felder (name und age) sowie zwei öffentliche Methoden enthält, Die zweite Klasse, StringTest, wird verwendet, da sie Main enthält.
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.
*/
Kommentar
Beachten Sie, dass auf die privaten Felder (name und age) im vorherigen Beispiel nur über die öffentlichen Methoden der Child-Klasse zugegriffen werden kann. Mit der folgenden Anweisung ist es z. B. nicht möglich, den Namen des Kindes über die Main-Methode auszugeben:
Console.Write(child1.name); // Error
Main könnte nur dann auf private Member von Child zugreifen, wenn Main ein Member der Klasse wäre.
Innerhalb einer Klasse deklarierte Typen ohne Zugriffsmodifizierer werden standardmäßig auf private festgelegt, sodass die Datenmember in diesem Beispiel private bleiben, selbst wenn das Schlüsselwort entfernt wird.
Beachten Sie schließlich, dass das Altersfeld für das mit dem Standardkonstruktor (child3) erstellte Objekt mit dem Wert 0 (null) initialisiert wurde.
C#-Programmiersprachenspezifikation
Weitere Informationen finden Sie in der C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.