super (Instrucción)
Hace referencia al objeto base del objeto actual. Se puede utilizar en dos contextos.
// Syntax 1: Calls the base-class constructor with arguments.
super(arguments)
// Syntax 2: Accesses a member of the base class.
super.member
Argumentos
arguments
Opcional en la sintaxis 1. Lista de argumentos separados con comas para el constructor de clase base.member
Necesaria en la sintaxis 2. Miembro de la clase base al que se obtiene acceso.
Comentarios
La palabra clave super se suele utilizar en una de dos situaciones. Puede utilizarla para llamar explícitamente al constructor de la clase base con uno o más argumentos. También puede utilizarla para tener acceso a miembros de la clase base que ha reemplazado la clase actual.
Ejemplo 1
En el siguiente ejemplo, super hace referencia al constructor de la clase base:
class baseClass {
function baseClass() {
print("Base class constructor with no parameters.");
}
function baseClass(i : int) {
print("Base class constructor. i is "+i);
}
}
class derivedClass extends baseClass {
function derivedClass() {
// The super constructor with no arguments is implicitly called here.
print("This is the derived class constructor.");
}
function derivedClass(i : int) {
super(i);
print("This is the derived class constructor.");
}
}
new derivedClass;
new derivedClass(42);
Este programa muestra el siguiente resultado cuando se ejecuta:
Base class constructor with no parameters.
This is the derived class constructor.
Base class constructor. i is 42
This is the derived class constructor.
Ejemplo 2
En el siguiente ejemplo, super permite el acceso a un miembro reemplazado de la clase base:
class baseClass {
function test() {
print("This is the base class test.");
}
}
class derivedClass extends baseClass {
function test() {
print("This is the derived class test.");
super.test(); // Call the base class test.
}
}
var obj : derivedClass = new derivedClass;
obj.test();
Este programa muestra el siguiente resultado cuando se ejecuta:
This is the derived class test.
This is the base class test.