Eso es un problema muy interesante de la teoría de objetos y tiene una solución muy estandarizada (porque el problema es típico de lenguajes tipados) y se llama interface
Una interface define métodos que debe implementar una clase y a su vez sirve para darle una identidad global a un grupo de clases. Yendo a la simplificación didáctica con animales sería
Código ActionScript :
package {
public interface IAnimal {
function come(comida:uint):void;
function camina(distancia:uint):void;
}
}
Luego defino dos clases que implementan IAnimal (esto quiere decir que deben tener el método come y camina, sino da error de compilación)
Código ActionScript :
package animales{
public class perro implements IAnimal{
(... omito el codigo de la clase, solo recordar que debe existir el método comer y caminar ...)
}
}
package animales{
public class gato implements IAnimal{
(... omito el codigo de la clase, solo recordar que debe existir el método comer y caminar ...)
}
}
Ok ahora tengo dos clases, perro y gato que implementan IAnimal. Pero dentro de mi clase donde las utilizo, no las puedo llamar de la misma forma porque me da error de compilación. ¿Que puedo hacer? Hago un cast de la Interfaz
Código ActionScript :
var animal:IAnimal;
switch (resp)
{
case true :
animal = new perro();
break;
case false :
animal = new gato();
break;
}
addChild(animal);
Jorge