Freigeben über


Class-Anweisung (Visual Basic)

Deklariert den Namen einer Klasse und führt die Definition der Variablen, Eigenschaften, Ereignisse und Prozeduren ein, die die Klasse umfasst.

Syntax

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

Bestandteile

Begriff Definition
attributelist Wahlfrei. Siehe Attributliste.
accessmodifier Wahlfrei. Dabei kann es sich um eine der folgenden Methoden handeln:

- Öffentlich
- Geschützt
- Freund
- Privat
- Geschützter Freund
- Privat geschützt

Siehe Access-Ebenen in Visual Basic.
Shadows Wahlfrei. Siehe Schatten.
MustInherit Wahlfrei. Siehe MustInherit.
NotInheritable Wahlfrei. Siehe "NotInheritable".
Partial Wahlfrei. Gibt eine partielle Definition der Klasse an. Siehe Teilweise.
name Erforderlich. Name dieser Klasse. Siehe deklarierte Elementnamen.
Of Wahlfrei. Gibt an, dass es sich um eine generische Klasse handelt.
typelist Erforderlich, wenn Sie das Schlüsselwort "Of" verwenden. Liste der Typparameter für diese Klasse. Siehe Typliste.
Inherits Wahlfrei. Gibt an, dass diese Klasse die Member einer anderen Klasse erbt. Siehe Inherits-Anweisung.
classname Erforderlich, wenn Sie die Inherits Anweisung verwenden. Der Name der Klasse, von der diese Klasse abgeleitet wird.
Implements Wahlfrei. Gibt an, dass diese Klasse die Member einer oder mehrerer Schnittstellen implementiert. Siehe Implements-Anweisung.
interfacenames Erforderlich, wenn Sie die Implements Anweisung verwenden. Die Namen der Schnittstellen, die diese Klasse implementiert.
statements Wahlfrei. Anweisungen, die die Member dieser Klasse definieren.
End Class Erforderlich. Beendet die Class Definition.

Bemerkungen

Eine Class Anweisung definiert einen neuen Datentyp. Eine Klasse ist ein grundlegender Baustein der objektorientierten Programmierung (OOP). Weitere Informationen finden Sie unter "Objekte und Klassen".

Sie können nur auf Namespace- oder Modulebene verwenden Class . 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 keine Prozedur oder ein Block sein kann. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen.

Jede Instanz einer Klasse verfügt über eine Lebensdauer unabhängig von allen anderen Instanzen. Diese Lebensdauer beginnt, wenn sie von einer New Operator-Klausel oder von einer Funktion wie z CreateObject. B. erstellt wird. Sie endet, wenn alle Variablen, die auf die Instanz verweisen, auf Nothing oder auf Instanzen anderer Klassen festgelegt wurden.

Klassen sind standardmäßig auf Friend-Zugriff festgelegt. Sie können ihre Zugriffsebenen mit den Zugriffsmodifizierern anpassen. Weitere Informationen finden Sie unter Access-Ebenen in Visual Basic.

Regeln

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

  • Erbschaft. Wenn die Klasse die Inherits-Anweisung verwendet, können Sie nur eine Basisklasse oder Schnittstelle 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 darin geschachtelt ist.

  • Implementierung. Wenn die Klasse die Implements-Anweisung verwendet, müssen Sie jedes Element implementieren, das von jeder Schnittstelle definiert wird, in interfacenamesder Sie angeben. Eine Ausnahme ist die ErneuteImplementierung eines Basisklassenmempels. Weitere Informationen finden Sie unter "Reimplementation" in Implements.

  • Default-Eigenschaft. Eine Klasse kann höchstens eine Eigenschaft als Standardeigenschaft angeben. Weitere Informationen finden Sie unter "Standard".

Verhalten

  • Zugriffsebene. Innerhalb einer Klasse können Sie jedes Mitglied mit einer eigenen Zugriffsebene deklarieren. Klassenmember werden standardmäßig für den öffentlichen Zugriff verwendet, mit Ausnahme von Variablen und Konstanten, die standardmäßig auf "Privater Zugriff" festgelegt sind. Wenn eine Klasse mehr eingeschränkten Zugriff hat als eines ihrer Member, hat die Klassenzugriffsebene Vorrang.

  • Bereich. Eine Klasse befindet sich im Gesamten des zugehörigen Namespaces, der Klasse, der Struktur oder des Moduls.

    Der Bereich jedes Klassenelements ist die gesamte Klasse.

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

    Klassenmber haben Lebensdauern, je nachdem, wie und wo sie deklariert werden. Weitere Informationen finden Sie unter "Lebensdauer" in Visual Basic.

  • Qualifikation. Code außerhalb einer Klasse muss den Namen eines Mitglieds mit dem Namen dieser Klasse qualifizieren.

    Wenn Code in einer geschachtelten Klasse einen nicht qualifizierten Verweis auf ein Programmierelement macht, sucht Visual Basic zuerst in der geschachtelten Klasse nach dem Element, dann in seiner enthaltenden Klasse usw. auf das äußerste enthaltende Element.

Klassen und Module

Diese Elemente haben viele Ähnlichkeiten, aber es gibt auch einige wichtige Unterschiede.

  • Terminologie. In früheren Versionen von Visual Basic werden zwei Typen von Modulen erkannt: Klassenmodule (CLS-Dateien) und Standardmodule (BAS-Dateien). Die aktuelle Version ruft diese Klassen bzw. Module auf.

  • Freigegebene Mitglieder. Sie können steuern, ob ein Mitglied einer Klasse ein freigegebenes oder Instanzmitglied ist.

  • Objektausrichtung. Klassen sind objektorientiert, aber Module sind nicht. Sie können eine oder mehrere Instanzen einer Klasse erstellen. Weitere Informationen finden Sie unter "Objekte und Klassen".

Beispiel

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

Class BankAccount
    Shared interestRate As Decimal
    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