Foros del Web » Creando para Internet » Flash y Actionscript »

Ayuda con la herencia de clases

Estas en el tema de Ayuda con la herencia de clases en el foro de Flash y Actionscript en Foros del Web. Hola! Estoy estudiando actionScript y me ha surgido una duda y no sé el por qué ocurre lo siguiente en este código. Os muestro aquí ...
  #1 (permalink)  
Antiguo 30/04/2008, 05:51
 
Fecha de Ingreso: abril-2008
Mensajes: 9
Antigüedad: 9 años, 7 meses
Puntos: 0
Ayuda con la herencia de clases

Hola!

Estoy estudiando actionScript y me ha surgido una duda y no sé el por qué ocurre lo siguiente en este código.
Os muestro aquí los pequeños códigos que he realizado a base de prueba y os comento la duda al final.

CÓDIGO DE LA SUPER CLASE
Código:
import CONN.as
class ICM
{
	var connection:CONN;
	var path:String;
	public function ICM()
	{
		trace("constructor ICM");
		path=" uno";
		connection=new CONN(this,path);
	}
	public function probar()
	{
		trace("probar ICM");
	}
}
CÓDIGO DE LA SUBCLASE
Código:
class AM extends ICM
{
	public function AM()
	{
		trace("constructor de AM");
		super();
	}
	public function probar()
	{
		trace("probar AM");
		//super.probar();
	}
}
Código de la clase desde la cual hago la llamada a una función la clase ICM, sin ser esta subclase de ninguna.
Código:
class CONN
{
	var cm:ICM;
	public function CONN(controlador:ICM,cadena:String)
	{
		trace("constructor CONN");
		cm=controlador;
		trace("hacemos la prueba"+cadena);
		cm.probar();
	}
}
CÓDIGO del fichero .fla
Código:
import AM.as

controlador=new AM();

stop();
Pues bien, en estos pequeños códigos, desde el fichero ".fla", hago una llamada al constructor de la clase AM, este a su vez, llama al constructor de la superclase ICM y esta al constructor de otra clase(clase CONN) que en principio, no es heredada de nadie, una clase independiente.

A esta clase, le paso el fichero ICM.as para poder llamar desde la clase CONN a la función probar de la clase ICM, sin embargo y aquí está mi pregunta, ¿por qué se me ejecuta la función probar de la clase AM en vez de la que yo he llamado(la función probar de la clase ICM)?

Sé que esto siempre ocurre así, pero no sé el por qué.
Mira quí os pongo la salida para que la veáis:

constructor de AM
constructor ICM
constructor CONN
hacemos la prueba uno
probar AM

Veis, en vez de en la última linea de la salida poner "probar ICM" pues es la función a la que he llamado pone la salida de la función probar de la subclase de ICM, osea, una función a la que yo no he llamado.

Necesito vuestra ayuda porque no me gusta aprender cosas que no conozco por que ocurren.

Muchas gracias y espero vuestras respuestas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:39.