Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
Super
|
Super {( param {; param2 ; ... ; paramN} )} -> Résultat | ||||||||
Paramètre | Type | Description | ||||||
param | Varié |
![]() |
Paramètre(s) à passer au constructeur parent | |||||
Résultat | Objet |
![]() |
Parent de l'objet | |||||
La commande Super appelle la "superclass" (classe parente).
Super a été introduite pour deux raisons :
// dans le constructeur myClass
C_TEXTE($1;$2)
Super($1) //appelle le constructeur de la superclass avec un paramètre texte
This.param:=$2 // utilise le second paramètre
Super.doSomething(42) //appelle la fonction "doSomething" déclarée dans les superclass
Cet exemple illustre l'utilisation de Super dans un constructeur de classe. La commande est appelée pour éviter la duplication des parties du constructeur qui sont communes aux classes Rectangle et Square.
//Classe : Rectangle
Class constructor
C_ENTIER LONG($1;$2)
This.name:="Rectangle"
This.height:=$1
This.width:=$2
Function sayName
ALERTE("Bonjour, Je m'appelle "+This.name+".")
Function getArea
C_ENTIER LONG($0)
$0:=This.height*This.width
//Classe : Square
Class extends Rectangle
Class constructor
C_ENTIER LONG($1)
// Il appelle le class constructor parent avec les longueurs
// fourni pour la largeur et la hauteur du Rectangle
Super($1;$1)
// Dans les classes dérivées, Super doit être appelée avant de
// pouvoir utiiser 'This'
This.name:="Square"
Cet exemple illustre l'utilisation de Super dans une méthode membre de classe.
Vous avez créé la classe Rectangle avec une fonction :
//Classe : Rectangle
Function nbSides
C_TEXTE($0)
$0:="Je possède 4 côtés"
Vous avez également créé la classe Square avec une fonction qui appelle la fonction superclass :
//Classe : Square
Class prolonge Rectangle
Function description
C_TEXTE($0)
$0:=Super.nbSides()+" qui sont tous égaux"
Vous pouvez ensuite saisir, dans une méthode projet :
C_OBJET($square)
C_TEXTE($message)
$square:=cs.Square.new()
$message:=$square.description() //Je possède 4 côtés qui sont tous égaux
Produit : 4D
Thème : Langage
Numéro :
1706
Nom intl. : Super
Créé : 4D v18 R3
4D - Langage ( 4D v20 R7)