Super
Super {( param {; param2 ; ... ; paramN} )} -> Resultado
Parámetro | Tipo | Descripción | |
---|---|---|---|
param | Mixed | 🡒 | Parámetro(s)a pasar al constructor padre |
Resultado | Objeto | 🡐 | Padre del objeto |
Descripción
El comando Super realiza llamadas a la superclase.
Super se ha introducido por dos propósitos diferentes:
- en un código de constructor, el comando Super permite llamar al constructor de la superclase. Cuando el comando Super se utiliza en un constructor,
aparece solo y debe utilizarse antes de la palabra clave This .- Si todos los constructores de clase de árbol heredado no se llaman correctamente, se genera el error -10748. El desarrollador 4D debe asegurarse de que las llamadas sean válidas.
- Si se llama al comando This en un objeto cuyas superclases no se han construido, se genera el error -10743.
- Si se llama Super fuera del alcance de un objeto, o si se llama en un objeto cuyo constructor de superclase ya se ha llamado, se genera el error 10746.
// en el constructor myClass
var $1;$2 : Text
Super($1) //llama al constructor de la superclase con un parámetro texto
This.param:=$2 // utiliza el segundo parámetro
- entro de una función de miembro de clase, Super designa el prototipo de la superclase y permite llamar a una función de la jerarquía de la superclase.
Super.doSomething(42) //llama a la función "doSomething" declarada en superclases
Ejemplo 1
Este ejemplo ilustra el uso de Super en un constructor de clase. Se llama al comando para evitar duplicar las partes del constructor que son comunes entre las clases Rectangle y Square.
//Clase: Rectangle
Class constructor
var $1;$2 : Integer
This.name:="Rectangle"
This.height:=$1
This.width:=$2
Function sayName
ALERT("Hi, I am a "+This.name+".")
Function getArea
var $0 : Integer
$0:=This.height*This.width
//Clase: Square
Class extends Rectangle
Class constructor
var $1 : Integer
// Llama la clase constructor padre con las longitudes
// suministrado para el ancho y la alto del Rectangle
Super($1;$1)
// En las clases derivadas, se debe llamar a Super antes que
// pueda utilizar 'This'
This.name:="Square"
Ejemplo 2
Este ejemplo ilustra el uso de Super en un método miembro de clase.
Creó la clase Rectangle con una función:
//Clase: Rectangle
Function nbSides
var $0 : Text
$0:="I have 4 sides"
También creó la clase Square con una función que llama a la función de superclass:
//Clase: Square
Clase extiende Rectangle
Function description
var $0 : Text
$0:=Super.nbSides()+" which are all equal"
Entonces puedes escribir en un método proyecto:
var $square : Object
var $message : Text
$square:=cs.Square.new()
$message:=$square.description() //tengo 4 lados los cuales son todos iguales