Super
Super( ...param : any )
Super : Object
Paramètres | Type | Description | |
---|---|---|---|
param | any | -> | Paramètre(s) à passer au constructeur de la classe parente |
Résultat | Object | <- | 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 :
- 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 commandeSuper
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
- A l'intérieur d'une fonction de classe,
Super
désigne le prototype de lasuperclass
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 commande | 1706 |
Thread safe | ✓ |