Aller au contenu principal
Version: Next

Super

Super {( param {; param2 ; ... ; paramN} )} -> Résultat

ParamètreTypeDescription
paramVarié🡒Paramètre(s) à passer au constructeur parent
RésultatObjet🡐Parent de l'objet

Description

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
 var $1;$2 : Text
 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 classe, Super 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

Exemple 1

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
 var $1;$2 : Integer
 This.name:="Rectangle"
 This.height:=$1
 This.width:=$2
 
 Function sayName
 ALERT("Bonjour, Je m'appelle "+This.name+".")
 
 Function getArea
 var $0 : Integer
 $0:=This.height*This.width
  //Classe : Square
 
 Class extends Rectangle
 
 Class constructor
 var $1 : Integer
 
  // 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"

Exemple 2

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
 var $0 : Text
 $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
 var $0 : Text
 $0:=Super.nbSides()+" qui sont tous égaux"

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

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

Voir aussi

cs
This