Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com

Página Inicial

 
4D v20 R7
Super

Super 


 

Super {( param {; param2 ; ... ; paramN} )} -> Resultado 
Parâmetro Tipo   Descrição
param  Mixed in Parâmetros a passar ao constructor pai
Resultado  Objeto in Pai do objeto

O comando Super faz chamadas à superclasse. 

Super foi introduzido para servir dois propósitos:

  • dentro de um constructor codeSuper é 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
 C_TEXT($1;$2)
 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 membroSuper 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

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
 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

 

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

 

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

Agora pode escrever em um método projeto:

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



Ver também 

cs
This

 
PROPRIEDADES 

Produto: 4D
Tema: Linguagem
Número 1706

This command can be run in preemptive processes

 
CONTEÚDO DA PÁGINA 
 
HISTÓRIA 

Criado por: 4D v18 R3

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v20 R7)