SUPER
SUPER ist eine spezielle Variable und dient der objektorientierten Programmierung.
SUPER ist der Zeiger eines Funktionsbausteins auf die Basis-Funktionsbaustein-Instanz, aus die der Funktionsbaustein erzeugt wurde. Der SUPER-Zeiger erlaubt somit auch den Zugriff auf die Implementierung der Methoden des Basis-Funktionsbausteins (Basisklasse). Für jeden Funktionsbaustein steht automatisch ein SUPER-Zeiger zur Verfügung.
Sie können SUPER nur in Methoden- und in den zugehörigen Funktionsbaustein-Implementierungen verwenden.
Dereferenzierung des Zeigers: SUPER^
Verwendung des SUPER-Zeigers: Mithilfe des Schlüsselworts SUPER rufen Sie die Implementierung der Basisklasse oder eine Methode auf, die in der Instanz der Basisklasse gültig ist.
Beispiele:
ST:
SUPER^(); // Call of FB-body of base class
SUPER^.METH_DoIt(); // Call of method METH_DoIt that is implemented in base class
FUP/CFC/LD:
SUPER ist für die Anweisungsliste (AWL) nicht implementiert. |
Verwendung von SUPER- und THIS-Zeiger:
Funktionsbaustein FB_Base:
FUNCTION_BLOCK FB_Base
VAR_OUTPUT
nCnt : INT;
END_VAR
Methode FB_Base.METH_DoIt:
METHOD METH_DoIt : BOOL
nCnt := -1;
Methode FB_Base.METH_DoAlso:
METHOD METH_DoAlso : BOOL
METH_DoAlso := TRUE;
Funktionsbaustein FB_1:
FUNCTION_BLOCK FB_1 EXTENDS FB_Base
VAR_OUTPUT
nBase: INT;
END_VAR
THIS^.METH_DoIt(); // Call of the methods of FB_1
THIS^.METH_DoAlso();
SUPER^.METH_DoIt(); // Call of the methods of FB_Base
SUPER^.METH_DoAlso();
nBase := SUPER^.nCnt;
Methode FB_1.METH_DoIt:
METHOD METH_DoIt : BOOL
nCnt := 1111;
METH_DoIt := TRUE;
Methode FB_1.METH_DoAlso:
METHOD METH_DoAlso : BOOL
nCnt := 123;
METH_DoAlso := FALSE;
Programm MAIN:
PROGRAM MAIN
VAR
fbMyBase : FB_Base;
fbMyFB_1 : FB_1;
nTHIS : INT;
nBase : INT;
END_VAR
fbMyBase();
nBase := fbmyBase.nCnt;
fbMyFB_1();
nTHIS := fbMyFB_1.nCnt;
Siehe auch: