Saltar para o conteúdo principal
Versão: Próximo

Super

Super {( param {; param2 ; ... ; paramN} )} -> Resultado

ParâmetroTipoDescrição
paramMixed🡒Parâmetros a passar ao constructor pai
ResultadoObjeto🡐Pai do objeto

Descrição

O comando Super faz chamadas à superclasse.

Super foi introduzido para servir dois propósitos:

  • dentro de um constructor code, Super é um documento que permite chamar o constructor da superclasse. Quando usado em um constructor, o comando Super aparece sozinho e deve ser usado antes da palavra chave This ser usada.
    • Se todos os constructores da classe na árvore de herança não forem chamados adequadamente, o erro -10748 é gerado. O desenvolvedor 4D tem que verificar se as chamadas são válidas.
    • Se o comando This for chamado em um objeto cujas superclasses não foram construidas, o erro -10743 é gerado.
    • Se Super for chamado fora do escopo de um objeto, ou em um objeto cujo constructor de superclasse ainda não foi chamado, o erro-10746 é gerado.
  // dentro do constructor myClass
 var $1;$2 : Text
 Super($1) //chama o constructor de superclass com um parâmetro texto
 This.param:=$2 // usa o segundo parâmetro
  • Dentro de uma função classe membro, Super determina o protótipo da superclasse e permite chamar a função da hierarquia superclasse.
 Super.doSomething(42) //chama a função "façaAlgo"  declarada em superclasses

Exemplo 1

Este exemplo ilustra o uso de Super em um class constructor. O comando é chamado para evitar duplicar as partes do constructor que são comuns entre as classes Rectangle e Square.

  //Classe: 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
  //Class: Square
 
 Class extends Rectangle
 
 Class constructor
 var $1 : Integer
 
  // Chama o construtor da classe pai com as dimensões
  // fornecidas para a largura e latura do  Rectangle
 Super($1;$1)
 
  // Em classes derivadas, Super deve ser chamado antes
  // de usar  'This'
 This.name:="Square"

Exemplo 2

Este exemplo ilustra o uso de Super no método class member.

Crie um a classe Rectangle com uma função:

  //Class: Rectangle
 
 Function nbSides
 var $0 : Text
 $0:="I have 4 sides"

Também crie uma classe Square com uma função chamando uma função superclasse:

  //Class: Square
 
 Class extends Rectangle
 
 Function description
 var $0 : Text
 $0:=Super.nbSides()+" which are all equal"

Agora pode escrever em um método projeto:

 var $square : Object
 var $message : Text
 $square:=cs.Square.new()
 $message:=$square.description() //I have 4 sides which are all equal

Ver também

cs
This