Super
Super*( ...param : any )
Super : Object
| Parâmetro | Tipo | Descrição | |
|---|---|---|---|
| param | any | -> | Parâmetro(s) a passar para o construtor pai | 
| Resultados | Object | <- | Pai do objecto | 
A palavra-chave Super permite chamadas à superclasse, ou seja, a classe pai.
Super tem dois objectivos diferentes:
- Dentro de um código construtor, Superé um comando que permite chamar o construtor da superclasse. Quando usado em um construtor, o comandoSuperaparece sozinho e deve ser usado antes que a palavra-chaveThisseja usada.
- Se todos os construtores de classe na árvore de herança não forem correctamente chamados, é gerado o erro -10748. É o programador 4D que se certifica de que as chamadas são válidas.
- Se o comando Thisfor chamado em um objeto cujas superclasses não foram construídas, o erro -10743 será gerado.
- Se o Superé chamado fora do escopo do objeto, ou em um objeto cujo construtor de superclasse já foi chamado, erro -10746 é gerado.
// dentro do construtor myClass
var $text1; $text2 : Text
Super($text1) //chama o construtor da superclasse com um parâmetro de texto
This.param:=$text2 // usa o segundo parâmetro
- Dentro de uma função da classe, Superdesigna o protótipo dasuperclasse permite chamar uma função da hierarquia da superclasse.
Super.doSomething(42) //chamada a função "doSomething"  
//declarada em superclasses
Exemplo 1
Este exemplo ilustra o uso do Super em um construtor de classe. O comando é chamado para evitar duplicar as partes do construtor que são comuns entre as classes Rectangle e Square.
// Class: Rectangle
Class constructor($width : Integer; $height : Integer)
 This.name:="Rectangle"
 This.height:=$height
 This.width:=$width
Function sayName()
 ALERT("Hi, I am a "+This.name+".")
// Function definition
Function getArea() : Integer
 return (This.height)*(This.width)
//Class: Square
Class extends Rectangle
Class constructor ($side : Integer)
 // It calls the parent class's constructor with lengths
 // provided for the Rectangle's width and height
 Super($side;$side)
 // In derived classes, Super must be called 
 // before you can use 'This'
 This.name:="Square"
Function getArea() : Integer
 return This.height*This.width
Exemplo 2
This example illustrates the use of Super in a class function. Você criou a classe Rectangle com uma função:
//Class: Rectangle
Function nbSides() : Text
 return "I have 4 sides"
Você também criou a classe Square com uma função que chama a função da superclasse:
//Class: Square
Class extends Rectangle
Function description() : Text
  return Super.nbSides()+" which are all equal"
Depois pode escrever num método projecto:
Parâmetros
Veja também
Propriedades
| Número de comando | 1706 | 
| Thread safe | ✓ |