Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com

Accueil

 
4D v20 R7
Super

Super 


 

Super {( param {; param2 ; ... ; paramN} )} -> Résultat 
Paramètre Type   Description
param  Varié in Paramètre(s) à passer au constructeur parent
Résultat  Objet in Parent de l'objet

La commande Super appelle la "superclass" (classe parente). 

Super a été introduite pour deux raisons : 

  • dans un code de constructeur, la commande Super permet d'appeler le constructeur de la superclass. Lorsque la commande Super est utilisée dans un constructeur, elle apparait seule et doit être utilisée avant le mot-clé This.
    • Si tous les constructeurs de classe de l'arbre d'héritage ne sont pas appelés correctement, l'erreur -10748 est générée. C'est au développeur 4D de s'assurer que les appels sont valides.
    • Si la commande This est appelée sur un objet dont les superclass n'ont pas été construites, l'erreur -10743 est générée.
    • Si Super est appelée hors de la portée d'un objet, ou si elle est appelée sur un objet dont le constructeur de la superclass a déjà été appelé, l'erreur -10746  est générée.

  // dans le constructeur myClass
 C_TEXT($1;$2)
 Super($1//appelle le constructeur de la superclass avec un paramètre texte
 This.param:=$2 // utilise le second paramètre

  • dans une fonction membre d'une classeSuper désigne le prototype de la superclass et permet d'appeler une fonction de la hiérarchie de la superclass.

 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_LONGINT($1;$2)
 This.name:="Rectangle"
 This.height:=$1
 This.width:=$2
 
 Function sayName
 ALERT("Bonjour, Je m'appelle "+This.name+".")
 
 Function getArea
 C_LONGINT($0)
 $0:=This.height*This.width

 

  //Classe : Square
 
 Class extends Rectangle
 
 Class constructor
 C_LONGINT($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_TEXT($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_TEXT($0)
 $0:=Super.nbSides()+" qui sont tous égaux"

Vous pouvez ensuite saisir, dans une méthode projet :

 C_OBJECT($square)
 C_TEXT($message)
 $square:=cs.Square.new()
 $message:=$square.description() //Je possède 4 côtés qui sont tous égaux



Voir aussi  

cs
This

 
PROPRIÉTÉS 

Produit : 4D
Thème : Langage
Numéro : 1706

Commande(s) éligible(s) à l'exécution dans un process préemptif

 
PAGE CONTENTS 
 
HISTORIQUE 

Créé : 4D v18 R3

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v20 R7)