Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v20 R7
Super

Super 


 

Super {( param {; param2 ; ... ; paramN} )} -> Resultado 
Parámetro Tipo   Descripción
param  Mixed in Parámetro(s)a pasar al constructor padre
Resultado  Objeto in Padre del objeto

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
 C_TEXT($1;$2)
 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 claseSuper 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

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
 C_LONGINT($1;$2)
 This.name:="Rectangle"
 This.height:=$1
 This.width:=$2
 
 Function sayName
 ALERT("Hi, I am a "+This.name+".")
 
 Function getArea
 C_LONGINT($0)
 $0:=This.height*This.width

 

  //Clase: Square
 
 Class extends Rectangle
 
 Class constructor
 C_LONGINT($1)
 
  // 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"

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
 C_TEXT($0)
 $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
 C_TEXT($0)
 $0:=Super.nbSides()+" which are all equal"

Entonces puedes escribir en un método proyecto:

 C_OBJECT($square)
 C_TEXT($message)
 $square:=cs.Square.new()
 $message:=$square.description() //tengo 4 lados los cuales son todos iguales



Ver también 

cs
This

 
PROPIEDADES 

Producto: 4D
Tema: Lenguaje
Número 1706

This command can be run in preemptive processes

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

Creado por: 4D v18 R3

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v20 R7)