Modificar el tipo de una variable heredada
Wednesday, August 20th, 2008Hace unos días preguntaba en ASNativos si en AS3 se podía cambiar el tipo de una variable heredada. En concreto cambiar el tipo a una clase que hereda de la original. Pues parece que no es posible.
Es decir, tengo clase B que hereda de A. Clase A tiene una propiedad tipo X y yo quiero que la clase B modifique el tipo de X a un hijo de X (sí, este párrafo se entiende peor que el anterior).
¿Y para qué? Pues para ZCode. En mi MVC base tanto el modelo como la vista tienen una instancia del otro. Ahora, la aplicación Pepito tienen las clases PepitoModel y PepitoView por lo que la instancia de la vista de PepitoModel debe ser tipo PepitoView, no View. Es precisamente por eso que NO me vale una interface ya que no sé a priori qué métodos va a necesitar PepitoView. Me vale lo que hacía en AS2, modificar el tipo de una variable al heredar, como aquí:
Modelo/vista general:
http://code.google.com/p/zcode/source/browse/trunk/as2/tv/zarate/application/Model.as
http://code.google.com/p/zcode/source/browse/trunk/as2/tv/zarate/application/View.as
Modelo/vista específico:
http://code.google.com/p/zcode/source/browse/trunk/as2/tv/zarate/projects/webv3/WebModel.as
http://code.google.com/p/zcode/source/browse/trunk/as2/tv/zarate/projects/webv3/WebView.as
Pues parece que no es posible en AS3. Lo mejor que me he encontrado es hacer algo como esto:
private function get view():PepitoView{
return _view as PepitoView;
}
Pero claro, entonces PepitoView tiene 2 variables _view y view, lo cual es una mala ñapa. Como dice Cay la otra sería utilizar view:*, no sé qué es menos malo.
¿Otra ideas felices? ¿Algún superpatrón al rescate?