Freigeben über


Klasse (C#-Referenz)

Deklarieren Sie Klassen mithilfe des class Schlüsselworts, wie im folgenden Beispiel gezeigt:

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

C# unterstützt nur eine einzelne Vererbung. Mit anderen Worten, eine Klasse kann die Implementierung nur von einer Basisklasse erben. Eine Klasse kann jedoch mehrere Schnittstellen implementieren.

Die C#-Sprachreferenz dokumentiert die zuletzt veröffentlichte Version der C#-Sprache. Außerdem enthält sie eine erste Dokumentation zu Funktionen in der öffentlichen Vorschau für die kommende Sprachversion.

In der Dokumentation werden alle Features identifiziert, die in den letzten drei Versionen der Sprache oder in der aktuellen öffentlichen Vorschau eingeführt wurden.

Tipp

Informationen dazu, wann ein Feature erstmals in C# eingeführt wurde, finden Sie im Artikel zum Versionsverlauf der C#-Sprache.

Weitere Informationen zu Klassen, Schnittstellen und Vererbung finden Sie im Artikel zur Vererbung im Abschnitt "Grundlagen".

Sie können Klassen direkt in einem Namespace deklarieren. Verschachteln Sie diese Klassen nicht in anderen Klassen. Sie können diese Klassen entweder public oder internal. Standardmäßig sind internalKlassen .

Sie können Klassenmmber deklarieren, einschließlich geschachtelter Klassen, als , , , , internal, oder private protectedprivate. protectedprotected internalpublic Standardmäßig sind privateMitglieder .

Weitere Informationen finden Sie unter Zugriffsmodifikatoren.

Sie können generische Klassen mit Typparametern deklarieren. Weitere Informationen finden Sie unter Generische Klassen.

Eine Klasse kann Deklarationen der folgenden Member enthalten:

Beispiel

Im folgenden Beispiel wird das Deklarieren von Klassenfeldern, Konstruktoren und Methoden veranschaulicht. Außerdem werden Objektinstanz- und Druckinstanzdaten veranschaulicht. In diesem Beispiel werden zwei Klassen deklariert. Die erste Klasse enthält Childzwei private Felder (name und age), zwei öffentliche Konstruktoren und eine öffentliche Methode. Die zweite Klasse, StringTestenthält 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.
*/

Kommentare

Sie können nur über die öffentliche Methode der Child Klasse auf die privaten Felder (name und age) zugreifen. Beispielsweise können Sie den Namen des untergeordneten Elements nicht aus der Main Methode drucken, indem Sie eine Anweisung wie folgt verwenden:

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

Der Zugriff auf private Mitglieder von Child "from Main " ist nur möglich, wenn Main es sich um ein Mitglied der Klasse handelt. Typen, die innerhalb einer Klasse ohne Zugriffsmodifizierer standardmäßig privatedeklariert sind, sodass die Datenmember in diesem Beispiel immer noch private vorhanden sind, wenn das Schlüsselwort entfernt wird. Schließlich wird das age Feld für das mithilfe des parameterlosen Konstruktors (child3) erstellte Objekt standardmäßig auf Null initialisiert.

C#-Sprachspezifikation

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die endgültige Quelle für C#-Syntax und -Verwendung.

Siehe auch