Está en la página 1de 5

Polimorfismo

Variables polimrficas

Definicin
Una variable referencia es polimrfica cuando su tipo de declaracin no coincide con el tipo del objeto al que referencia:

Figura f1 = new Figura(Estandar, Rojo);


f1 es de tipo Figura (tipo esttico) f1 apunta a un objeto de tipo Figura (tipo dinmico )

Figura f2 = new Circulo(Verde, 5.0);


f2es de tipo Figura (tipo esttico) f2 es una variable polimrfica f2 apunta a un objeto de tipo Circulo (tipo dinmico )

Asignacin de referencias entre clases


Variable de la super clase Variable de la super clase Correcto Variable de la subclase Correcto

Superclase f= new Superclase ();

Subclase s=new Subclase(); Superclase f=s;


Cuando una variable de la superclase contiene una referencia a un objeto de la subclase y esta se utiliza para llamar a un mtodo ., se hace una llamada al mtodo de la subclase.

Variable de la subclase

Error Superclase f= new Superclase (); Subclase s=new Subclase(); s=f;

Correcto Subclase s=new Subclase();

Algunas veces, la regla de que no puede asignarse un supertipo a un subtipo es ms restrictiva de lo necesario. Si sabemos que la variable de un cierto supertipo contiene un objeto de un subtipo,

podra realmente permitirse la asignacin?.

Vehculo v; Coche a = new Coche(); v = a; // Sin problemas a = v; // Error, segn el compilador


El compilador no acepta esta asignacin porque como a (Coche) tiene mas atributos que v (Vehculo) partes del objeto a quedan sin asignacin. El compilador no sabe que v ha sido anteriormente asignado por un coche.

Podemos resolver este problema diciendo explcitamente al sistema, que la variable v contiene un objeto Coche, y lo hacemos utilizando el operador de enmascaramiento de tipos, en una operacin tambin conocida como casting.

a = (Coche)v; // correcto
En tiempo de ejecucin, el Java verificar si realmente v es un Coche. Si fuimos cuidadosos, todo estar bien. si el objeto almacenado en v es de otro tipo, el sistema indicar un error en tiempo de Ejecucin (denominado ClassCastException) y el programa se detendr.

También podría gustarte