class (C#-Referenz)class (C# Reference)

Klassen werden mithilfe des Schlüsselworts class deklariert, wie im folgenden Beispiel dargestellt:Classes are declared using the keyword class, as shown in the following example:

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

HinweiseRemarks

In C# ist nur die einfache Vererbung zulässig.Only single inheritance is allowed in C#. Eine Klasse kann also Implementierungen aus nur einer Basisklasse erben.In other words, a class can inherit implementation from one base class only. Es kann allerdings mehr als eine Schnittstelle implementiert werden.However, a class can implement more than one interface. Die folgende Tabelle zeigt Beispiele für Klassenvererbung und Implementierung der Schnittstelle:The following table shows examples of class inheritance and interface implementation:

VererbungInheritance BeispielExample
KeineNone class ClassA { }
SingleSingle class DerivedClass: BaseClass { }
Keine, Implementierung von zwei SchnittstellenNone, implements two interfaces class ImplClass: IFace1, IFace2 { }
Single, Implementierung einer SchnittstelleSingle, implements one interface class ImplDerivedClass: BaseClass, IFace1 { }

Klassen, die Sie direkt innerhalb eines Namespace und nicht in anderen Klassen geschachtelt deklarieren, können entweder public oder internal sein.Classes that you declare directly within a namespace, not nested within other classes, can be either public or internal. Klassen sind standardmäßig internal.Classes are internal by default.

Klassenmember, einschließlich geschachtelte Klassen möglich öffentlichen, protected internal, geschützt, interne, private, oder private protected.Class members, including nested classes, can be public, protected internal, protected, internal, private, or private protected. Member sind standardmäßig private.Members are private by default.

Weitere Informationen finden Sie unter Zugriffsmodifizierer.For more information, see Access Modifiers.

Sie können generische Klassen deklarieren, die über Typparameter verfügen.You can declare generic classes that have type parameters. Weitere Informationen finden Sie unter Generische Klassen.For more information, see Generic Classes.

Eine Klasse kann Deklarationen der folgenden Member enthalten:A class can contain declarations of the following members:

BeispielExample

Das folgende Beispiel zeigt das Deklarieren von Klassenfeldern, Konstruktoren und Methoden.The following example demonstrates declaring class fields, constructors, and methods. Darüber hinaus veranschaulicht es Objektinstanziierung und Ausgabe von Instanzdaten.It also demonstrates object instantiation and printing instance data. In diesem Beispiel werden zwei Klassen deklariert.In this example, two classes are declared. Die erste Klasse, Child, enthält zwei private Felder (name und age), zwei öffentliche Konstruktoren und eine öffentliche Methode.The first class, Child, contains two private fields (name and age), two public constructors and one public method. Die zweite Klasse, StringTest, enthält Main.The second class, StringTest, is used to contain 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.
*/

KommentareComments

Beachten Sie, dass im vorherigen Beispiel nur über die öffentliche Methode der Klasse Child auf die privaten Felder (name und age) zugegriffen werden kann.Notice that in the previous example the private fields (name and age) can only be accessed through the public method of the Child class. Sie können z.B. den Namen des untergeordneten Elements nicht aus der Main-Methode mit einer Anweisung wie folgt drucken:For example, you cannot print the child's name, from the Main method, using a statement like this:

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

Zugriff auf private Member der Child von Main wäre nur möglich, wenn Main ein Member der Klasse wäre.Accessing private members of Child from Main would only be possible if Main were a member of the class.

Typen, die innerhalb einer Klasse ohne Zugriffsmodifizierer deklariert werden, sind standardmäßig private, sodass die Datenmember in diesem Beispiel dennoch private wären, wenn das Schlüsselwort entfernt worden wäre.Types declared inside a class without an access modifier default to private, so the data members in this example would still be private if the keyword were removed.

Beachten Sie schließlich, dass für das Objekt, das mit dem Standardkonstruktor (child3) erstellt wurde, das Altersfeld standardmäßig auf 0 initialisiert wurde.Finally, notice that for the object created using the default constructor (child3), the age field was initialized to zero by default.

C#-ProgrammiersprachenspezifikationC# Language Specification

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

Siehe auchSee Also

C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-SchlüsselwörterC# Keywords
VerweistypenReference Types