Klassen
Falls Sie mit der objektorientierten Programmierung vertraut sind, wissen Sie bereits, dass eine Klasse Operationen definiert, die von einem Objekt ausgeführt werden können (Methoden, Ereignisse oder Eigenschaften), und dass sie einen Wert definiert, der den Zustand des Objekts beschreibt (Felder). Obwohl eine Klasse in der Regel sowohl Definition als auch Implementierung einschließt, kann sie über einen oder mehrere Member verfügen, die keine Implementierung aufweisen.
Eine Instanz einer Klasse ist ein Objekt. Um die Objektfunktionen zu nutzen, rufen Sie seine Methoden auf und greifen auf seine Eigenschaften, Ereignisse und Felder zu.
In der folgenden Tabelle sind einige Merkmale beschrieben, die eine Klasse während der Laufzeit haben kann. (Zusätzliche, über Attribute verfügbare Merkmale sind nicht in der Liste enthalten.) Möglicherweise stellt Ihre Programmiersprache nicht all diese Merkmale zur Verfügung.
Merkmal | Beschreibung |
---|---|
sealed | Legt fest, dass von diesem Typ kein anderer Typ abgeleitet werden kann. |
implements | Gibt an, dass die Klasse eine oder mehrere Schnittstellen verwendet; es werden Implementierungen von Schnittstellenmembern bereitgestellt. |
abstract | Gibt an, dass Sie keine Instanz der Klasse erstellen können. Um die Klasse verwenden zu können, müssen Sie eine andere Klasse davon ableiten. |
inherits | Legt fest, dass an jeder Stelle, an der die Basisklasse angegeben ist, Instanzen der Klasse verwendet werden können. Eine abgeleitete Klasse, die von einer Basisklasse erbt, kann die Implementierung jeder virtuellen Methode verwenden, die von der Basisklasse bereitgestellt wird, oder die abgeleitete Klasse kann diese mit einer eigenen Implementierung außer Kraft setzen. |
exported oder not exported | Gibt an, ob eine Klasse außerhalb der Assembly, in der sie definiert wurde, sichtbar ist. Gilt nur für Klassen der höchsten Ebene. |
Auch geschachtelte Klassen verfügen über Membermerkmale. Weitere Informationen finden Sie unter Typmember.
Klassenmember, die keine Implementierung haben, sind abstrakte Member. Eine Klasse mit einem oder mehreren abstrakten Membern ist selbst abstrakt, und von dieser Klasse können keine Instanzen erstellt werden. Bei einigen Sprachen, die für die Laufzeit konzipiert sind, können Klassen selbst dann als abstrakt gekennzeichnet werden, wenn sie keine abstrakten Member haben. Sie können eine abstrakte Klasse verwenden, um eine gewisse Basisfunktionalität einzuschließen, die von abgeleiteten Klassen ggf. geerbt bzw. überschrieben werden kann. Nicht abstrakte Klassen werden als konkrete Klassen bezeichnet.
Eine Klasse kann zwar eine beliebige Anzahl von Schnittstellen implementieren, sie kann jedoch nur von einer Basisklasse erben. Alle Klassen müssen über mindestens einen Konstruktor verfügen, durch den neue Instanzen der Klasse initialisiert werden.
Jede für Laufzeitunterstützung ausgelegte Sprache bietet eine Möglichkeit, spezifische Merkmale für eine Klasse oder einen Klassenmember festzulegen. Indem Sie die für Ihre Programmiersprache erforderliche Syntax verwenden, stellen Sie sicher, dass die Merkmale der Klasse und ihrer Member zusammen mit der Klassenimplementierung (als Metadaten) gespeichert werden.
Siehe auch
Allgemeines Typensystem | |Schnittstellen | System.Delegate | Metadaten