Namenschwergängigkeit

Auf Programmiersprachen ist Namenschwergängigkeit die Vereinigung von Gegenständen (Daten und/oder Code) mit Bezeichnern. Wie man sagt, bringt ein zu einem Gegenstand gebundener Bezeichner in diesem Gegenstand Verweise an. Maschinensprachen haben keinen eingebauten Begriff von Bezeichnern, aber Namengegenstand bindings als ein Dienst und Notation für den Programmierer wird durch Programmiersprachen durchgeführt. Schwergängigkeit wird mit scoping vertraut verbunden, weil Spielraum bestimmt, welche Namen zu der Gegenstände - an der Positionen im Programm-Code (lexikalisch) und in der der möglichen Ausführungspfade (zeitlich) binden.

Der Gebrauch eines Bezeichners in einem Zusammenhang, der eine Schwergängigkeit dafür gründet, wird eine Schwergängigkeit genannt (oder

das Definieren) Ereignis. In allen anderen Ereignissen (z.B, in Ausdrücken, Anweisungen und Unterprogramm-Anrufen), tritt ein Bezeichner dafür ein, wozu er gebunden wird; solche Ereignisse werden angewandte Ereignisse genannt.

Verbindliche Zeit

Die Schwergängigkeit von Namen vor dem Programm wird geführt wird statisch (auch "früh") genannt; bindings hat geleistet, weil die Programm-Läufe (auch "spät" oder "virtuell") dynamisch sind.

Ein Beispiel einer statischen Schwergängigkeit ist ein direkter C-Funktionsanruf: Die durch den Bezeichner Verweise angebrachte Funktion kann sich an der Durchlaufzeit nicht ändern.

Aber ein Beispiel der dynamischen Schwergängigkeit ist dynamische Absendung, als in einem C ++ virtueller Methode-Anruf. Da der spezifische Typ eines polymorphen Gegenstands nicht bekannt ist, vor der Durchlaufzeit (im Allgemeinen) wird die durchgeführte Funktion dynamisch gebunden., Nehmen Sie zum Beispiel, den folgenden javanischen Code:

öffentliche Leere foo (java.util. Liste

list.add ("Bar");

}\

</Quelle>

ist eine Schnittstelle, so muss sich auf einen Subtyp davon beziehen. Ist es eine Verweisung auf a, oder ein anderer Subtyp dessen? Die wirkliche Methode, die dadurch Verweise angebracht ist, ist bis zur Durchlaufzeit nicht bekannt. Auf einer Sprache wie C ist die wirkliche Funktion bekannt.

Die Wiederschwergängigkeit und Veränderung

Wiederschwergängigkeit sollte mit der Veränderung nicht verwirrt sein - "Wiederschwergängigkeit" ist eine Änderung zum Verweise anbringenden Bezeichner; "Veränderung" ist eine Änderung zum Verweise angebrachten Wert. Denken Sie den folgenden javanischen Code:

LinkedList

haben Sie = neuer LinkedList Schlagseite

list.add ("foo");

haben Sie = ungültig Schlagseite;

</Quelle>

Der Bezeichner bringt am Anfang in nichts Verweise an (es ist uninitialisiert); es ist dann Rückprall, um in einem Gegenstand (eine verbundene Liste von Schnuren) Verweise anzubringen. Die verbundene Liste, die dadurch Verweise angebracht ist, wird dann verändert, eine Schnur zur Liste hinzufügend. Letzt, ist Rückprall dazu.

Spät statisch

Spät ist statische Schwergängigkeit eine Variante der Schwergängigkeit irgendwo zwischen der statischen und dynamischen Schwergängigkeit. Denken Sie das folgende PHP Beispiel:

klassifizieren Sie Einen {\

statischer $word = "hallo";

statische Funktion hallo {druckt selbst:: $word; }\

}\

Klasse B erweitert Einen {\

statischer $word = "auf Wiedersehen";

}\

B:: hallo ;

</Quelle>

In diesem Beispiel bindet der PHP Dolmetscher die Funktion hallo zur Klasse A, und so der Anruf B:: Hallo erzeugt die Schnur "hallo". Wenn die Semantik "selbst:: $word" hatte auf der "späten statischen Schwergängigkeit basiert" dann wäre das Ergebnis "auf Wiedersehen" gewesen.

Wenn man

mit der PHP Version 5.3 spät beginnt, wird statische Schwergängigkeit http://us2.php.net/manual/en/language.oop5.late-static-bindings.php unterstützt. Spezifisch, wenn "selbst:: $word" im obengenannten wurden zu "statischem geändert:: $word", wie gezeigt, im folgenden Block, dann das Ergebnis des Anrufes B:: Hallo würde "auf Wiedersehen" sein:

klassifizieren Sie Einen {\ statischer $word = "hallo";

statische Funktion hallo {statischer Druck:: $word; }\

}\Klasse B erweitert Einen {\ statischer $word = "auf Wiedersehen";}\B:: hallo ;</Quelle>

Siehe auch

  • Spät Schwergängigkeit
  • Zweigtabellenmethode, Namen anzuwenden, der über den Zweigtisch oder die Funktionszeigestöcke bindet
  • Dynamische Schwergängigkeit

Mine-Rolle / Spezielle Mannschaft
Impressum & Datenschutz