Class-Anweisung (Visual Basic)

Deklariert den Namen einer Klasse und führt die Definitionen der Variablen, Eigenschaften, Ereignisse und Prozeduren ein, die die Klasse enthält.

[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ MustInherit | NotInheritable ] [ Partial ] _
Class name [ ( Of typelist ) ]
    [ Inherits classname ]
    [ Implements interfacenames ]
    [ statements ]
End Class

Bestandteile

Ausdruck

Definition

attributelist

Optional. Siehe Attributliste.

accessmodifier

Optional. Einer der folgenden Werte ist möglich:

Weitere Informationen finden Sie unter Zugriffsebenen in Visual Basic.

Shadows

Optional. Siehe Shadows.

MustInherit

Optional. Weitere Informationen finden Sie unter MustInherit (Visual Basic).

NotInheritable

Optional. Weitere Informationen finden Sie unter NotInheritable (Visual Basic).

Partial

Optional. Gibt eine partielle Definition der Klasse an. Weitere Informationen finden Sie unter Partial (Visual Basic).

name

Erforderlich. Name dieser Klasse. Weitere Informationen finden Sie unter Namen deklarierter Elemente (Visual Basic).

Of

Optional. Gibt an, dass dies eine generische Klasse ist.

typelist

Erforderlich, wenn Sie das Of-Schlüsselwort verwenden. Liste mit Typparametern für diese Klasse. Siehe Typliste.

Inherits

Optional. Gibt an, dass diese Klasse die Member einer anderen Klasse erbt. Weitere Informationen finden Sie unter Inherits-Anweisung.

classname

Erforderlich, wenn Sie die Inherits-Anweisung verwenden. Der Name der Klasse, von der diese Klasse abgeleitet wird.

Implements

Optional. Gibt an, dass diese Klasse die Member einer oder mehrerer Schnittstellen implementiert. Weitere Informationen finden Sie unter Implements-Anweisung.

interfacenames

Erforderlich, wenn Sie die Implements-Anweisung verwenden. Die Namen der von dieser Klasse implementierten Schnittstellen.

statements

Optional. Anweisungen, die die Member dieser Klasse definieren.

End Class

Erforderlich. Beendet die Class-Definition.

Hinweise

Eine Class-Anweisung definiert einen neuen Datentyp. Eine Klasse ist ein wesentlicher Baustein der objektorientierten Programmierung (OOP). Weitere Informationen finden Sie unter Objekte und Klassen in Visual Basic.

Class kann nur auf Namespace- oder Modulebene verwendet werden. Dies bedeutet, dass der Deklarationskontext für eine Klasse eine Quelldatei, ein Namespace, eine Klasse, eine Struktur, ein Modul oder eine Schnittstelle sein muss und weder eine Prozedur noch ein Block sein kann. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen (Visual Basic).

Die Lebensdauer jeder Instanz einer Klasse ist von der Lebensdauer aller anderen Instanzen unabhängig. Diese Lebensdauer beginnt, wenn die Instanz durch eine Operator New (Visual Basic)-Klausel oder eine Funktion, z. B. CreateObject, erstellt wird. Sie endet, wenn alle Variablen, die auf die Instanz zeigen, auf Nothing (Visual Basic) oder auf Instanzen anderer Klassen festgelegt wurden.

Der Standardzugriff von Klassen ist Friend (Visual Basic). Sie können ihre Zugriffsebenen mit den Zugriffsmodifizierern anpassen. Weitere Informationen finden Sie unter Zugriffsebenen in Visual Basic.

Regeln

  • Schachtelung. Sie können eine Klasse in einer anderen Klasse definieren. Die äußere Klasse wird als enthaltende Klasse und die innere Klasse als geschachtelte Klasse bezeichnet.

  • Vererbung. Wenn die Klasse die Inherits-Anweisung verwendet, können Sie nur eine einzige Basisklasse oder Basisschnittstelle angeben. Eine Klasse kann nicht von mehreren Elementen erben.

    Eine Klasse kann nicht von einer anderen Klasse mit einer restriktiveren Zugriffsebene erben. Beispielsweise kann eine Public-Klasse nicht von einer Friend-Klasse erben.

    Eine Klasse kann nicht von einer Klasse erben, die in ihr geschachtelt ist.

  • Implementierung. Wenn die Klasse die Implements-Anweisung verwendet, müssen Sie alle Member implementieren, die durch jede in interfacenames angegebene Schnittstelle definiert sind. Eine Ausnahme hiervon ist die erneute Implementierung eines Basisklassenmembers. Weitere Informationen finden Sie in Implements-Klausel (Visual Basic) unter "Erneute Implementierung".

  • Standardeigenschaft. Für eine Klasse kann höchstens eine Eigenschaft als Standardeigenschaft angegeben werden. Weitere Informationen finden Sie unter Default (Visual Basic).

Verhalten

  • Zugriffsebene. In einer Klasse können Sie jeden Member mit einer eigenen Zugriffsebene deklarieren. Der Standardzugriff für Klassen ist Public (Visual Basic), mit Ausnahme von Variablen und Konstanten, deren Standardzugriff Private (Visual Basic) ist. Wenn eine Klasse eingeschränkteren Zugriff als einer ihrer Member aufweist, hat die Zugriffsebene der Klasse Vorrang.

  • Gültigkeitsbereich. Der Gültigkeitsbereich einer Klasse umfasst den Namespace, die Klasse, Struktur oder das Modul, in dem bzw. der sich die Klasse befindet.

    Der Gültigkeitsbereich jedes Klassenmembers umfasst die gesamte Klasse.

    Lebensdauer. Visual Basic unterstützt keine statischen Klassen. Die funktionale Entsprechung einer statischen Klasse wird von einem Modul bereitgestellt. Weitere Informationen finden Sie unter Module-Anweisung.

    Die Lebensdauer von Klassenmembern hängt davon ab, wie und wo sie deklariert werden. Weitere Informationen finden Sie unter Lebensdauer in Visual Basic.

  • Qualifikation. In Code außerhalb einer Klasse muss der Name eines Members mit dem Namen dieser Klasse qualifiziert werden.

    Wenn Code in einer geschachtelten Klasse einen nicht qualifizierten Verweis auf ein Programmierelement enthält, sucht Visual Basic das Element zunächst in der geschachtelten Klasse, anschließend in der enthaltenden Klasse und so weiter bis zum äußersten enthaltenden Element.

Klassen und Module

Diese Elemente weisen viele Ähnlichkeiten auf, jedoch bestehen auch einige wichtige Unterschiede.

  • Begriffe. In älteren Versionen von Visual Basic werden zwei Typen von Modulen erkannt: Klassenmodule (CLS-Dateien) und Standardmodule (BAS-Dateien). In der aktuellen Version werden diese als Klassen bzw. Module bezeichnet.

  • Freigegebene Member. Sie können steuern, ob ein Member einer Klasse ein freigegebener Member oder ein Instanzmember ist.

  • Objektorientierung. Klassen sind objektorientiert, Module jedoch nicht. Sie können eine oder mehrere Instanzen einer Klasse erstellen. Weitere Informationen finden Sie unter Objekte und Klassen in Visual Basic.

Beispiel

Im folgenden Beispiel wird eine Class-Anweisung verwendet, um eine Klasse und mehrere Member zu definieren.

Class bankAccount
    Shared interestRate As Decimal
    Private accountNumber As String
    Private accountBalance As Decimal
    Public holdOnAccount As Boolean = False

    Public ReadOnly Property balance() As Decimal
        Get
            Return accountBalance
        End Get
    End Property

    Public Sub postInterest()
        accountBalance = accountBalance * (1 + interestRate)
    End Sub

    Public Sub postDeposit(ByVal amountIn As Decimal)
        accountBalance = accountBalance + amountIn
    End Sub

    Public Sub postWithdrawal(ByVal amountOut As Decimal)
        accountBalance = accountBalance - amountOut
    End Sub
End Class

Siehe auch

Aufgaben

Gewusst wie: Verwenden einer generischen Klasse (Visual Basic)

Referenz

Interface-Anweisung (Visual Basic)

Module-Anweisung

Property-Anweisung

Konzepte

Strukturen und Klassen (Visual Basic)

Objektlebensdauer: Erstellen und Zerstören von Objekten (Visual Basic)

Generische Typen in Visual Basic (Visual Basic)

Weitere Ressourcen

Objekte und Klassen in Visual Basic