Freigeben über


Class-Anweisung (Visual Basic)

Aktualisiert: November 2007

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

  • attributelist
    Optional. Siehe Attributliste.

  • accessmodifier
    Optional. Einer der folgenden Werte ist möglich:

    Siehe Zugriffsebenen in Visual Basic.

  • Shadows
    Optional. Siehe Shadows.

  • MustInherit
    Optional. Siehe MustInherit.

  • NotInheritable
    Optional. Siehe NotInheritable.

  • Partial
    Optional. Gibt eine partielle Definition der Klasse an. Siehe Partial (Visual Basic).

  • name
    Erforderlich. Name dieser Klasse. Siehe Namen deklarierter Elemente.

  • 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. Siehe 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. Siehe 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 Objektorientiertes Programmieren in Visual Basic und unter Klassen: Vorlagen für Objekte.

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.

Die Lebensdauer jeder Instanz einer Klasse ist von der Lebensdauer aller anderen Instanzen unabhängig. Diese Lebensdauer beginnt, wenn die Instanz durch eine New (Visual Basic)-Klausel oder eine Funktion, z. B. CreateObject-Funktion (Visual Basic), 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 (Visual Basic) unter "Erneute Implementierung".

  • Standardeigenschaft. Für eine Klasse kann höchstens eine Eigenschaft als Standardeigenschaft angegeben werden. Weitere Informationen finden Sie unter Standardeigenschaften.

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.

  • Qualifizierung. 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. Weitere Informationen finden Sie unter Auflösen eines Verweises bei mehreren Variablen mit gleichem Namen.

Klassen und Module

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

  • Begriffe. In älteren Versionen von Visual Basis 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 Klassen und Module.

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

Konzepte

Strukturen und Klassen

Objektlebensdauer: Erstellen und Zerstören von Objekten

Generische Typen in Visual Basic

Referenz

Interface-Anweisung (Visual Basic)

Module-Anweisung

Property-Anweisung

Weitere Ressourcen

Was sind Klassen?