Freigeben über


Klasse (C#-Referenz)

Klassen werden mit dem Schlüsselwort classdeklariert, wie im folgenden Beispiel gezeigt:

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

Bemerkungen

In C# ist nur eine einzelne Vererbung zulässig. Mit anderen Worten, eine Klasse kann die Implementierung nur von einer Basisklasse erben. Eine Klasse kann jedoch mehrere Schnittstellen implementieren. Die folgende Tabelle zeigt Beispiele für die Klassenvererbung und Schnittstellenimplementierung:

Vererbung Beispiel
Nichts class ClassA { }
Ledig class DerivedClass : BaseClass { }
Keine, implementiert zwei Schnittstellen class ImplClass : IFace1, IFace2 { }
Single, implementiert eine Schnittstelle class ImplDerivedClass : BaseClass, IFace1 { }

Klassen, die Sie direkt innerhalb eines Namespace deklarieren, nicht in anderen Klassen geschachtelt, können öffentlich oder intern sein. Klassen sind internal standardmäßig vorhanden.

Klassenmitglieder, einschließlich geschachtelter Klassen, können öffentlich, geschützt, intern, intern, privat oder privat geschützt sein. Elemente sind private standardmäßig.

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 , StringTestwird verwendet, um Mainenthalten .

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

Beachten Sie, dass im vorherigen Beispiel nur über die öffentliche Methode der Child Klasse auf die privaten Felder (name und age) zugegriffen werden kann. Beispielsweise können Sie den Namen des untergeordneten Elements nicht mithilfe Main einer anweisung wie folgt drucken:

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

Der Zugriff auf private Mitglieder von "From ChildMain " wäre nur möglich, wenn Main ein Mitglied der Klasse wäre.

Typen, die innerhalb einer Klasse ohne Zugriffsmodifizierer standardmäßig privatedeklariert werden, sodass die Datenmember in diesem Beispiel weiterhin der Fall sein private würden, wenn das Schlüsselwort entfernt wurde.

Beachten Sie schließlich, dass das Feld für das objekt, das mit dem parameterlosen Konstruktorchild3 () erstellt wurde, age standardmäßig auf Null initialisiert wurde.

C#-Sprachspezifikation

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

Siehe auch