SELF und SUPER sind vordefinierte Objektreferenzen, die sich auf das Objekt beziehen, dessen Methode zur Zeit ausgeführt wird.
Formate
SELF
[klassenname-1 OF] SUPER
Syntaxregeln
SELF und SUPER dürfen nur in einer Methodendefinition verwendet werden.
SELF und SUPER dürfen nicht als Empfangsfeld verwendet werden.
SUPER darf nur als Objekt angegeben werden, für das mit der INVOKE-Anweisung eine Methode aufgerufen wird.
klassenname-1 ist der Name einer Klasse, der in der INHERITS-Klausel der zugehörigen Klassendefinition angegeben ist.
Falls die INHERITS-Klausel der zugehörigen Klassendefinition mehr als einen Klassennamen angibt, dann muss klassenname-1 spezifiziert werden.
Falls in der INHERITS-Klausel der zugehörigen Klassendefinition nur ein Klassenname aufgeführt ist, dann braucht klassenname-1 nicht angegeben werden.
SELF und SUPER sind von der Klasse Objekt und sind keine universellen Objektreferenzen.
Allgemeine Regeln
SELF und SUPER beziehen sich beide auf das Objekt, für das die Methode aufgerufen wurde, in der die SELF und SUPER-Angabe verwendet wird.
Ist SELF in einem Methodenaufruf angegeben, dann wird die Methode in der Menge der Methoden des Objekts gesucht, das zur Laufzeit dynamisch durch SELF referenziert wird.
Ist SUPER in einem aktuellen Methodenaufruf angegeben, dann werden bei der Methoden-Auswahl alle Methoden der Klasse ignoriert, die den Aufruf enthält und auch alle Methoden ihrer Unterklassen. Die aufgerufene Methode kann dann nur eine von einer übergeordneten Klasse (superclass) geerbte Methode sein.
Ist klassenname-1 angegeben, so wird nur in den dafür definierten Methoden gesucht.