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 1:
SUPER 2:

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: