Aller au contenu principal
Version: 20 R8

Super

Super( ...param : any )
Super : Object

ParamètresTypeDescription
paramany->Paramètre(s) à passer au constructeur de la classe parente
RésultatObject<-Parent de l'objet

Le mot-clé Super permet les appels à la superclass, c'est-à-dire à la classe parente.

Super peut être utilisé de deux différentes manières :

  1. A l'intérieur d'un code constructeur, Super est une commande qui permet d'appeler le constructeur de la superclasse. Dans une fonction constructor, la commande Super est utilisée seule et doit être appelée avant que le mot-clé This soit utilisé.
  • Si tous les class constructors dans l'arbre des héritages ne sont pas appelés correctement, l'erreur -10748 et générée. Il est de la responsabilité du développeur 4D de s'assurer que tous les appels sont valides.
  • Si la commande This est appelée sur un objet dont les superclasses n'ont pas été construites, l'erreur -10743 est générée.
  • Si Super est appelée en dehors d'un contexte d'objet, ou sur un objet dont le constructeur de la superclasse a déjà été appelé, l'erreur -10746 est générée.
// dans la fonction constructor de myClass
var $text1; $text2 : Text
Super($text1) //appel du constructeur de la superclasse avec un paramètre text
This.param:=$text2 // utilisation d'un second param
  1. A l'intérieur d'une fonction de classe, Super désigne le prototype de la superclass et permet d'appeler une fonction de la hiérarchie de la superclasse.
Super.doSomething(42) //appelle la fonction "doSomething"   
//déclarée parmi les superclasses

Exemple 1

Cet exemple illustre l'utilisation de Super dans un class constructor. La commande est appelée pour éviter de dupliquer les parties du constructeur qui sont communes aux classes Rectangle et Square.

// Class: Rectangle
Class constructor($width : Integer; $height : Integer)
This.name:="Rectangle"
This.height:=$height
This.width:=$width


Function sayName()
ALERT("Hi, I am a "+This.name+".")

// Function definition
Function getArea() : Integer

return (This.height)*(This.width)
//Class: Square

Class extends Rectangle

Class constructor ($side : Integer)

// Appelle le constructeur de la classe parente avec les dimensions
// fournies pour la largeur et la hauteur du Rectangle
Super($side;$side)
// Dans les classes dérivées, Super doit être appelé
// avant que vous puissiez utiliser 'This'
This.name:="Square"

Function getArea() : Integer
return This.height*This.width

Exemple 2

Cet exemple illustre l'utilisation de Super dans une fonction de classe. Vous avez créé la classe Rectangle contenant une fonction :

//Class: Rectangle

Function nbSides() : Text
return "I have 4 sides"

Vous avez également créé la classe Square contenant une fonction qui appelle la fonction superclass :

//Class: Square

Class extends Rectangle

Function description() : Text
return Super.nbSides()+" which are all equal"

Vous pouvez donc écrire dans une méthode projet :

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

Voir également

Page de Concept pour les Classes.

Propriétés

Numéro de commande1706
Thread safe