Super
Super*( ...param : any )
Super : Object
| Parámetros | Tipo | Descripción | |
|---|---|---|---|
| param | any | -> | Parámetro(s) a pasar al constructor de la clase padre | 
| Resultado | Object | <- | Padre del objeto | 
La palabra clave Super permite llamar a la superclass, es decir, la clase padre.
Super tiene dos propósitos diferentes:
- Dentro de un código constructor, Superes un comando que permite llamar al constructor de la superclase. Cuando se utiliza en un constructor, el comandoSuperaparece solo y debe ser usado antes de usar la palabra claveThis.
- Si todos los class constructors en el árbol de herencia no son llamados correctamente, se genera el error -10748. Es responsabilidad del desarrollador 4D asegurarse de que las llamadas sean válidas.
- Si el comando Thises llamado en un objeto cuyas superclases no han sido construidas, se genera el error -10743.
- Si se llama a Superfuera de un contexto de objeto, o en un objeto cuyo constructor de superclase ya ha sido llamado, se genera el error -10746.
// dentro del constructor myClass
var $text1; $text2 : Texto
Super($text1) //llamada del constructor de la superclase con un parámetro texto
Este. aram:=$text2 // usar un segundo parámetro
- Dentro de una función de clase, Superdesigna el prototipo de lasuperclasey permite llamar a una función de la jerarquía de superclase.
Super.doSomething(42) //llama a la función "doSomething"  
//declarada en superclases
Ejemplo 1
Este ejemplo ilustra el uso de Super en un class constructor. El comando es llamado para evitar duplicar las partes del constructor que son comunes entre las clases Rectangle y Square.
// Clase: Rectángulo
Class constructor($width : Integer; $height : Integer)
 This.name:="Rectangle"
 This.height:=$height
 This.width:=$width
Function sayName()
 ALERT("Hi, I am a "+This.name+".")
// Definición de la función
Function getArea() : Integer
 return (This.height)*(This.width)
//Class: Square
Class extends Rectangle
Class constructor ($side : Integer)
 // Llama al class constructor de la clase padre con longitudes
 // proporcionadas para el ancho y alto del rectángulo
 Super($side;$side)
 // En las clases derivadas, Super debe ser llamado antes de que 
 // pueda utilizar 'This'
 This.name:="Square"
Function getArea() : Integer
 return This.height*This.width
Ejemplo 2
Este ejemplo ilustra el uso de Super en una función de clase. Ha creado la clase Rectangle con una función:
//Class: Rectangle
Function nbSides() : Text
 return "I have 4 sides"
También creó la clase Square con una función que llama a la función superclase:
//Class: Square
Class extends Rectangle
Function description() : Text
  return Super.nbSides()+" which are all equal"
Entonces puede escribir en un método proyecto:
var $square : Objeto
var $message : Texto
$square:=cs.Square.new()
$message:=$square.description() //tengo 4 lados iguales
Ver también
Propiedades
| Número de comando | 1706 | 
| Hilo seguro | ✓ |