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: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
Objektlebensdauer: Erstellen und Zerstören von Objekten
Generische Typen in Visual Basic
Referenz
Interface-Anweisung (Visual Basic)