Share via


JScript-Modifizierer

JScript-Modifizierer verändern das Verhalten und die Sichtbarkeit von Klassen, Schnittstellen oder Membern von Klassen oder Schnittstellen. Sie können Modifizierer beim Definieren von Klassen und Schnittstellen verwenden, sie sind jedoch nicht unbedingt erforderlich.

Sichtbarkeitsmodifizierer

Sichtbarkeitsmodifizierer schränken den Zugriff von externem Code auf Klassen, Schnittstellen und deren Member ein. Durch Einschränkungen lassen sich empfehlenswerte Vorgehensweisen für objektorientierte Programmierung durchsetzen, indem Aufrufe von speziell angepassten internen Methoden und Feldern verhindert werden.

Standardmäßig hat Code, der auf eine Klasse zugreifen kann, auch Zugriff auf alle Member dieser Klasse. Mit den Sichtbarkeitsmodifizierern können Sie fallweise verhindern, dass externer Code auf bestimmte Klassenmember zugreift und festlegen, dass nur Klassen aus demselben Paket auf Member oder nur abgeleitete Klassen auf Klassenmember zugreifen können.

Sichtbarkeitsmodifizierer können nicht auf globale Funktionen oder Variablen angewendet werden. Die einzigen Sichtbarkeitsmodifizierer, die zusammen verwendet werden können, sind protected und internal.

Sichtbarkeitsmodifizierer

Gültigkeitsbereich

Bedeutung

public

Klasse, Klassenmember, Schnittstelle, Schnittstellenmember oder Enumerationen

Der Member ist für Code sichtbar, der ohne Sichtbarkeitseinschränkungen auf die Klasse zugreifen kann. Standardmäßig sind Klassen, Schnittstellen und deren Member in JScript öffentlich.

private

Klassenmember

Der Member ist nur innerhalb der Klasse sichtbar, in der er deklariert wurde. Für abgeleitete Klassen ist er nicht sichtbar. Code außerhalb der aktuellen Klasse kann nicht auf private Member zugreifen.

protected

Klassenmember

Der Member ist nur innerhalb der Klasse, in der er deklariert wurde, und für alle abgeleiteten Klassen dieser Klasse sichtbar. Der protected-Modifizierer kann nicht für Klassen mit Paketgültigkeitsbereich, jedoch für geschachtelte Klassen verwendet werden.

internal

Klasse, Klassenmember, Enumeration

Die Klasse, der Klassenmember oder die Enumeration ist überall in dem Paket sichtbar, in dem sie bzw. er deklariert wurde. Außerhalb des Pakets ist nichts sichtbar.

Vererbungsmodifizierer

Vererbungsmodifizierer steuern, wie Methoden und Eigenschaften aus abgeleiteten Klassen die Methoden und Eigenschaften in einer Basisklasse überschreiben. Mithilfe dieses Steuerelements können Sie festlegen, ob eine von Ihnen erstellte Klasse durch Methoden aus abgeleiteten Klassen überschrieben wird.

Standardmäßig überschreiben Methoden aus einer abgeleiteten Klasse die Basisklassenmethoden, sofern nicht in der abgeleiteten Klasse das hide-Attribut für Versionssicherheit verwendet wird. Dieses Attribut verhindert das Überschreiben. Mit Vererbungsmodifizierern können Sie steuern, ob bestimmte Methoden immer oder niemals überschrieben werden.

In manchen Situationen müssen Sie möglicherweise sicherstellen, dass eine Basisklassenmethode nicht überschrieben wird. Wenn Sie z. B eine Klasse in einem Paket definieren, können Sie mithilfe des final-Modifizierers sicherstellen, dass abgeleitete Klassen die Methoden und Eigenschaften der Klasse nicht ändern.

Andererseits ist es ggf. ratsam, das Überschreiben bestimmter Methoden für die Klasse erforderlich zu machen. Beispielsweise können Sie eine Klasse erstellen, die einige Grundfunktionen bereitstellt, aber für bestimmte Methoden den abstract-Modifizierer verwendet. Über die Implementierungen der abstrakten Methoden entscheidet die Person, die die abgeleitete Klasse erstellt.

Versionssicherheitsmodifizierer verwalten auch das Überschreiben, allerdings auf der Seite der abgeleiteten Klasse und nicht auf der Seite der Basisklasse. Versionssicherheitsmodifizierer haben nur dann Auswirkungen, wenn die überschriebene Basisklassenmethode keine Vererbungsmodifizierer aufweist.

Sie können nicht zwei Vererbungsmodifizierer oder einen Vererbungsmodifizierer und einen static-Modifizierer miteinander kombinieren.

Vererbungsmodifizierer

Gültigkeitsbereich

Bedeutung

abstract

Klasse, Methode oder Eigenschaft

Bei Methoden oder Eigenschaften gibt dieser Modifizierer an, dass der Member über keine Implementierung verfügt. Bei Klassen gibt dieser Modifizierer an, dass mindestens eine nicht implementierte Methode vorhanden ist. Eine abstrakte Klasse oder eine Klasse, die einen abstrakten Member enthält, kann nicht mit dem Schlüsselwort new instanziiert werden, aber sie kann als Basisklasse verwendet werden.

final

Klasse, Methode oder Eigenschaft

Für nicht erweiterbare Klassen oder für Methoden, die nicht überschrieben werden können. Das Verwenden von final verhindert, dass abgeleitete Klassen das Verhalten der Klasse durch Überschreiben wichtiger Funktionen ändern. Methoden mit dem final-Modifizierer können ausgeblendet oder überladen werden, aber nicht überschrieben.

Versionssicherheitsmodifizierer

Versionssicherheitsmodifizierer steuern, von welche Methoden aus einer abgeleiteten Klasse die Methoden in einer Basisklasse überschrieben werden. Mithilfe dieses Steuerelements können Sie verwalten, ob eine von Ihnen erstellte Klasse Methoden in der Basisklasse überschreiben soll.

Standardmäßig werden die Methoden in einer Basisklasse von Methoden aus einer abgeleiteten Klasse überschrieben. Allerdings kann das Überschreiben durch Vererbungsmodifizierer in der Definition der abgeleiteten Klasse ebenfalls verhindert werden. Versionssicherheitsmodifizierer steuern, ob bestimmte Methoden überschrieben werden oder nicht.

In einigen Fällen müssen Sie möglicherweise sicherstellen, dass Basisklassenmethoden nicht überschrieben werden. Beispielsweise können Sie eine Klasse erweitern, um das Verhalten der Basisklassenmethoden zu ändern. Wenn diese Methoden in der Basisklasse nicht überschrieben werden sollen, können Sie für die Methodendeklarationen den hide-Modifizierer verwenden.

Andererseits sollen u. U. bestimmte Basisklassenmethoden überschrieben werden. Beispielsweise können Sie die Methoden einer Klasse modifizieren, ohne die Klasse zu ändern. Indem Sie die Klasse erweitern und für die Methodendeklarationen den override-Modifizierer verwenden, legen Sie fest, dass die Basisklasse mit den neuen Methoden überschrieben wird.

Die erfolgreiche Verwendung des Versionssicherheitsmodifizierers hängt davon ab, ob bei der Deklaration der Basisklassenmethoden Vererbungsmodifizierer verwendet wurden. Basisklassenmethoden, die mit dem final-Modifizierer markiert wurden, können nicht überschrieben werden. Mit dem abstract-Modifizierer markierte Basisklassenmethoden können nicht ausgeblendet werden, es sei denn, es ist eine explizite Implementierung für die abstrakte Basisklassenmethode angegeben.

Sie können nicht zwei Versionssicherheitsmodifizierer oder einen Versionssicherheitsmodifizierer und einen static-Modifizierer miteinander kombinieren. Bei Ausführung im Versionssicherheitsmodus kann für jede Methode, die eine Basisklassenmethode überschreibt, jeweils nur ein Versionssicherheitsmodifizierer verwendet werden.

Versionssicherheitsmodifizierer

Gültigkeitsbereich

Bedeutung

hide

Methode oder Eigenschaft

Der Member überschreibt keinen Member mit demselben Namen in der Basisklasse.

override

Methode oder Eigenschaft

Standardmäßig überschreiben Member andere Member mit demselben Namen in der Basisklasse.

expando-Modifizierer

Der expando-Modifizierer bewirkt, dass sich ein auf Klassen basierendes Objekt wie ein JScript-Objekt verhält. Methoden und Eigenschaften können einem expando-Objekt dynamisch hinzugefügt werden. Weitere Informationen finden Sie unter Auf Prototypen basierende Objekte.

Sie können den expando-Modifizierer unabhängig von den anderen Modifizierern verwenden.

Modifizierer

Gültigkeitsbereich

Bedeutung

expando

Klasse oder Methode

Für eine Klasse wird eine indizierte Standardeigenschaft angegeben, die dynamische Eigenschaften (expandos) speichern und abrufen kann. Für eine Methode wird angegeben, dass es sich um einen Konstruktor für ein expando-Objekt handelt.

static-Modifizierer

Der static-Modifizerer gibt an, dass ein Member der Klasse zu der Klasse selbst gehört und nicht zu Instanzen dieser Klasse. Folglich können klassenspezifische Daten und Methoden nicht mit einer bestimmten Instanz verknüpft werden.

Sie können den static-Modifizierer nicht mit einem der Versionssicherheitsmodifizierer oder Vererbungsmodifizierer kombinieren.

Modifizierer

Gültigkeitsbereich

Bedeutung

static

Methode, Eigenschaft, Feld oder Klasse

Gibt für Methoden an, dass diese ohne eine Instanz der Klasse aufgerufen werden können. Für Eigenschaften und Felder wird angegeben, dass eine Kopie von allen Instanzen gemeinsam genutzt wird. Der static-Modifizierer darf nicht mit der static-Anweisung verwechselt werden, die auf Code zum Initialisieren der Klasse hindeutet.

Siehe auch

Referenz

class-Anweisung

interface-Anweisung

function-Anweisung

function get-Anweisung

function set-Anweisung

var-Anweisung

const-Anweisung

static-Anweisung

Weitere Ressourcen

Modifizierer