Clases en AS2 (4): Extensiones de una clase

El poder de las clases es obviamente la herencia que se puede hacer con ellas y entre ellas. Hay mucho de arte en el manejo de herencias y clases La herencia entre clases se denomina EXTENDER la clase, básicamente consiste en pasar los métodos y propiedades de una clase (a partir de este momento llamada CLASE PADRE) a otra (clase HIJA). La clase hija puede basarse en la clase padre y a partir de alli desarrollar sus propios métodos y propiedades.

Veamos esto, usando el clásico ejemplo de persona:

Usemos una clase nueva para hacer el modelo básico de persona:

class Persona4{
var nombre:String;
var edad:Number;
var hobbies:Array=new Array();
//funcion constructora que establece contacto con la clase base
function Persona4(nom:String,ed:Number){
nombre=nom;
edad=ed;
}
//funciones de tratamiento de datos, en este caso para añadir los hobbies a la matriz

//devolver nombre y edad
function daNombre():String{
return nombre;
}
function daEdad():Number{
return edad;
}
//para mostrar los hobbies
function daHobbies():Array{
return hobbies;
}
//para empujar los hobbies que pongamos a la matriz
function sumaHobbies(hobbie:String):Void{
hobbies.push(hobbie)
}
}

Persona4.as

Con esto acabamos de crear una clase persona que contiene nombre, edad y puede juntar hobbies. Ahora vamos a crear otra clase que sea una extensión de ésta:

class Varon extends Persona4{
var actri_fav:Array=new Array();
//funcion constructora
function Varon(nom:String, ed:Number){
//invocamos al constructor de la Superclase (Persona4) pasandole nuestros argumentos
super(nom,ed);
}
//igual que la clase PERSONA4 manejamos matrices para mostrar actrices favoritas ;)
function sumar_act(actri:String):Void{
actri_fav.push(actri);
}
function muestra_actri():Array{
return actri_fav
}
}

Varon.as

Ahora hemos creado una clase llamada VARON que es una extensión (subclase) de la clase PERSONA4 (superclase). La subclase se crea usando la palabra clave EXTENDS y por ella ha tomado los métodos para manejar los hobbies, pero como hemos querido usar métodos definidos en el constructor de la superclase hemos tenido que invocarlos, y para ello hemos pasado variables usando la palabra clave SUPER.Con SUPER podemos acceder al constructor de la SUPERCLASE, invocar métodos (super.metodo(parametro1, parametro2, ...etc)) o a la funcion constructora misma (super(parametro1, parametro2,.... etc)) que es lo que hemos hecho en este caso. Los argumentos deben coincidir en el tipo de argumentos que maneja la superclase.

Detalle importante: una subclase sólo puede heredar de una sola clase.

Baja el fla aquí

Manuel Jesús Vejarano::: Derechos Reservados