Share via


Klassen: Vorlagen für Objekte

Aktualisiert: November 2007

Klassen sind symbolische Darstellungen von Objekten. Klassen beschreiben die Eigenschaften, Felder, Methoden und Ereignisse, die Objekte bilden, auf dieselbe Weise, wie Baupläne die Elemente eines Gebäudes beschreiben. So wie ein Bauplan zum Errichten mehrerer Gebäude verwendet werden kann, ist es auch möglich, eine einzelne Klasse zur Erstellung einer beliebigen Anzahl von Objekten zu verwenden. Und wie Baupläne jene Teile von Gebäuden festlegen, die nur für bestimmte Personen zugänglich sind, so steuern auch Klassen über die Kapselung den Benutzerzugriff auf Objektelemente.

Klassen und Objekte

Die Begriffe Klasse und Objekt werden manchmal synonym verwendet, genau genommen beschreiben Klassen jedoch die Struktur von Objekten, während Objekte verwendbare Instanzen von Klassen sind. Jede Instanz ist eine exakte, jedoch verschiedene Kopie ihrer Klasse. Da ein Objekt eine Instanz einer Klasse ist, wird der Vorgang der Erstellung eines Objekts als Instanziierung bezeichnet.

Um auf den Vergleich mit Bauplänen zurückzukommen: Eine Klasse ist ein Bauplan, und ein Objekt ist ein anhand dieses Bauplans errichtetes Gebäude. In der Regel wirken sich Änderungen an den Daten eines Objekts nicht auf die Daten eines anderen Objekts aus. (Eine Ausnahme stellen jedoch freigegebene Member dar. Dies sind mit dem Shared-Modifizierer deklarierte Klassenmember, die unabhängig von bestimmten Instanzen einer Klasse vorhanden sind.)

Kapselung

Kapselung bezeichnet die Möglichkeit der Zusammenfassung einer Gruppe verwandter Elemente sowie die Steuerung des Zugriffs auf diese Gruppe. Klassen stellen eine der gebräuchlichsten Methoden zur Kapselung von Elementen dar. Im Beispiel unten kapselt die BankAccount-Klasse die Methoden, Felder und Eigenschaften zur Beschreibung eines Bankkontos.

Ohne Kapselung müssten Sie separate Prozeduren und Variablen zur Speicherung und Verwaltung der Bankkontodaten deklarieren. Darüber hinaus wäre es schwierig, mit mehreren Bankkonten gleichzeitig zu arbeiten. Mithilfe der Kapselung können Sie die Daten und Prozeduren in der BankAccount-Klasse als Einheit verwenden. Sie können ohne Probleme mit mehreren Bankkonten gleichzeitig arbeiten, da jedes Konto durch eine eindeutige Instanz der Klasse dargestellt wird.

Die Kapselung ermöglicht es Ihnen weiterhin, die Verwendung von Daten und Prozeduren zu steuern. Sie können Zugriffsmodifizierer (z. B. Private oder Protected) verwenden, um zu verhindern, dass externe Prozeduren Klassenmethoden ausführen oder Daten in Eigenschaften und Feldern lesen und ändern. Sie sollten die internen Details einer Klasse als Private deklarieren, damit sie außerhalb der Klasse verwendet werden können. Diese Technik wird als Ausblenden von Daten bezeichnet und zum Schutz von Kundendaten, z. B. dem Kontostand, benutzt.

Eine der grundlegenden Regeln der Kapselung ist, dass Klassendaten nur über die Property-Prozeduren oder Methoden geändert bzw. abgerufen werden sollten. Das Ausblenden der Implementierungsdetails der Klassen verhindert deren unerwünschte Verwendung und ermöglicht Ihnen die spätere Änderung dieser Daten, ohne dabei Kompatibilitätskonflikte zu riskieren. Beispielsweise kann in späteren Versionen der BankAccount-Klasse der Datentyp des Felds AccountBalance geändert werden, ohne dass dadurch die Funktionstüchtigkeit von Anwendungen beeinträchtigt wird, die davon abhängig sind, dass dieses Feld einen bestimmten Datentyp hat.

Vererbung

Sie können Klassen ebenso wie Visual Basic-Strukturen zur Definition von Datentypen benutzen, die eine Gruppe verwandter Elemente kapseln. Im Unterschied zu Strukturen können Visual Basic-Klassen jedoch die Merkmale anderer Klassen erben und erweitern. Klassen, die die Basis neuer Klassen darstellen, werden als Basisklassen bezeichnet. Von Basisklassen abgeleitete Klassen werden als abgeleitete Klassen bezeichnet. Abgeleitete Klassen erben alle Felder, Eigenschaften, Methoden und Ereignisse der Basisklasse. Das heißt, Sie können eine Klasse einmal entwickeln und debuggen und dann als Basis für weitere Klassen erneut verwenden.

Im folgenden Beispiel wird eine Basisklasse definiert, die ein allgemeines Bankkonto darstellt, sowie eine spezifische Klasse, die die Eigenschaften der Basisklasse erbt, jedoch den Besonderheiten eines Girokontos angepasst ist:

Class BankAccount
    Private AccountNumber As String
    Private AccountBalance As Decimal
    Private HoldOnAccount As Boolean = False
    Public Sub PostInterest()
        ' Add code to calculate the interest for this account.
    End Sub
    ReadOnly Property Balance() As Decimal
        Get
            ' Return the available balance.
            Return AccountBalance
        End Get
    End Property
End Class

Class CheckingAccount
    Inherits BankAccount
    Sub ProcessCheck()
        ' Add code to process a check drawn on this account.
    End Sub
End Class

Weitere Informationen über die Vererbung finden Sie unter Grundlagen der Vererbung.

Freigegebene Member

Standardmäßig sind Klassendaten klasseninstanzspezifisch. Es kann jedoch vorkommen, dass ein einzelnes Datenelement von allen von einer Klasse erstellten Objekten gemeinsam verwendet werden soll. In diesen Fällen verwenden Sie den Modifizierer Shared, damit eine Variable in allen Instanzen einer Klasse den gleichen Wert hat. (Als Shared deklarierte Member werden in anderen Programmiersprachen gelegentlich auch als "statische Member" bezeichnet). Sie können freigegebene Methoden mithilfe eines Klassennamen direkt aufrufen, ohne zuerst eine Instanz der Klasse zu erstellen.

Weitere Informationen zu freigegebenen Membern finden Sie unter Freigegebene Member in Visual Basic.

Shadowing

Abgeleitete Klassen können mithilfe des Shadows-Schlüsselworts einen Member deklarieren, dessen Name mit dem eines geerbten Members übereinstimmt. Der Datentyp von Membern, für die Shadowing durchgeführt wird, muss nicht mit dem Datentyp des Members übereinstimmen, anhand dessen Shadowing durchgeführt wurde. Beispielsweise kann eine Eigenschaft für eine Variable vom Typ Integer Shadowing durchführen.

Weitere Informationen zu freigegebenen Membern finden Sie unter Shadowing in Visual Basic.

Siehe auch

Konzepte

Strukturen und Klassen

Grundlagen der Vererbung

Freigegebene Member in Visual Basic

Shadowing in Visual Basic

Referenz

Shadows

Shared (Visual Basic)

Weitere Ressourcen

Erstellen und Verwenden von Objekten

Vererbung in Visual Basic