Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v20 R7
Super

Super 


 

Super {( param {; param2 ; ... ; paramN} )} -> Funktionsergebnis 
Parameter Typ   Beschreibung
param  Mixed in Parameter zum Übergeben an den übergeordneten Konstruktor
Funktionsergebnis  Objekt in Superklasse des Objekts

Der Befehl Super macht Aufrufe zur Superklasse. 

Super wurde für zwei unterschiedliche Zwecke eingeführt:

  • Innerhalb eines Konstruktor Code dient der Befehl Super zum Aufrufen des Konstruktors der Superklasse. Beim Verwenden in einem Konstruktor erscheint Super allein und muss vor This eingesetzt werden. 
    • Werden nicht alle Konstruktoren von Klassen im Vererbungsbaum korrekt aufgerufen, wird Fehler -10748 generiert. Der 4D Entwickler muss sicherstellen, dass Aufrufe gültig sind.
    • Wird This in einem Objekt aufgerufen, dessen Superklassen nicht konstruiert wurden, wird Fehler -10743 generiert. 
    • Wird Super außerhalb der Reichweite eines Objekts aufgerufen, oder in einem Objekt, dessen Konstruktor der Superklasse bereits aufgerufen wurde, wird Fehler -10746 generiert.

  // inside myClass constructor
 C_TEXT($1;$2)
 Super($1//calls superclass constructor with a text param
 This.param:=$2 // use second param

  • Innerhalb einer Class Member Function gibt Super den Prototyp der Superklasse an und kann eine Funktion in der Hierarchie der Superklasse aufrufen.

 Super.doSomething(42) //calls "doSomething" function declared in superclasses

Dieses Beispiel erläutert die Verwendung von Super im Konstruktur einer Klasse. Der Befehl wird aufgerufen, um Duplizieren von Konstruktorteilen zu vermeiden, die für die Klassen Rectangle und Square gleich sind.

  //Class: Rectangle
 
 Class constructor
 C_LONGINT($1;$2)
 This.name:="Rectangle"
 This.height:=$1
 This.width:=$2
 
 Function sayName
 ALERT("Hi, I am a "+This.name+".")
 
 Function getArea
 C_LONGINT($0)
 $0:=This.height*This.width

 

  //Class: Square
 
 Class extends Rectangle
 
 Class constructor
 C_LONGINT($1)
 
  // It calls the parent class's constructor with lengths
  // provided for the Rectangle's width and height
 Super($1;$1)
 
  // In derived classes, Super must be called before you
  // can use 'This'
 This.name:="Square"

 

Dieses Beispiel erläutert die Verwendung von Super in einer Class Member Methode. 

Sie haben die Klasse Rectangle mit einer Funktion angelegt:

  //Class: Rectangle
 
 Function nbSides
 C_TEXT($0)
 $0:="I have 4 sides"

Sie haben auch die Klasse Square mit einer Funktion angelegt, welche die Superclass Funktion aufruft:

  //Class: Square
 
 Class extends Rectangle
 
 Function description
 C_TEXT($0)
 $0:=Super.nbSides()+" which are all equal"

Dann können Sie in einer Projektmethode schreiben:

 C_OBJECT($square)
 C_TEXT($message)
 $square:=cs.Square.new()
 $message:=$square.description() //I have 4 sides which are all equal



Siehe auch 

cs
This

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Programmiersprache
Nummer: 1706

Dieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v18 R3

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v20 R7)