Você está na página 1de 18

POLIMORFISMO

UNIDAD 4

POLIMORFISMO
El Polimorfismo es la respuesta distinta frente a
una llamada a un mtodo dependiendo de la
naturaleza del objeto.
Consiste en definir mtodos distintos, que
comparten el mismo nombre, pero que se aplican
a clases diferentes

El polimorfismo es una de las


principales aplicaciones de la
herencia y supone el principal motivo
de las clases abstractas.

Ventaja
La principal ventaja del polimorfismo es la
reutilizacion de codigo

Asignacion de objetos a variables de su


super clase
En java, es posible asignar un objeto de una clase a
una variable de su superclase.
Por ejemplo, dada una variable de tipo Figura
Figura f;
Es posible asignar a esta variable el objeto Triangulo
f =new Triangulo();

A partir de aqui, se puede utilizar la


variable para invocar a aquellos
metodos del objeto que tambien
esten definidos o declarados en la
superclase, pero no aquellos que solo
existan en la clase a la que
pertenece el objeto

Tras la conexin polimorfa


nicamente podemos acceder a las
operaciones pertenecientes a la
clase asociada a la referencia.
El resto de operaciones del objeto no
son accesibles a travs de esta
referencia

Variable polimorfica
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);

Figura f2 = new Circulo(Verde, 5.0);


f2 variable polimorfica.

Clases abstractas: A menudo existen


clases que sirven para definir un tipo
genrico pero que no sentido instanciar
(crear objetos de ella).
Mtodos abstractos: Un mtodo
abstracto significa que tiene que ser
sobrescrito. No est implementado. Una
clase con uno o varios mtodos
abstractos tiene que ser declarada
abstracta.
No obstante una clase abstracta no
tiene porque tener mtodos abstractos.

INTERFACES (herencia
mltiple)
Los interfaces en Java nos solucionan
en parte la no existencia de la
herencia mltiple.
Los interfaces son un tipo de clase
especial que no implementa ninguno
de sus mtodos. Todos son abstractos.
Por tanto no se pueden instanciar.

De los interfaces tambin se hereda,


aunque se suele decir implementa. Y
se realiza mediante la palabra:
implements.
Si una clase que hereda de un
interface, no implementa todos los
mtodos de este, deber ser definida
como abstracta.

Para qu se utiliza?
Para permitir la herencia mltiple (ya
que la herencia en Java slo permite
heredar de una sola clase)

Definen un comportamiento (o
funcionalidad) genrico, ignorando
los aspectos relacionados con su
implementacin.
Las interfaces que implementa una
clase se comportan igual que las
superclases en lo que respecta al uso
del polimorfismo.

Subclase: Necesitemos hacer una


especializacin de la superclase
mediante sobre escritura o aadiendo
nuevos mtodos.
Clase abstracta: Queremos definir un
grupo genrico de clases y adems se
tiene algunos mtodos implementados
que reutilizar.

Interface: Queremos definir un grupo


genrico de clases y no tenemos
mtodos implementados que
reutilizar. O cuando nos veamos
forzados por la falta de herencia
mltiple en Java.

Interface vs. Clase


Abstracta
Un interface no puede implementar
ningn mtodo.
Un interface no forma parte de la
jerarqua de clases.

Una clase puede implementar n


interfaces pero solo una clase.
El objetivo de un mtodo abstracto
es forzar una interfaz (API) pero no
una implementacin

Haremos un interface cuando


queramos definir un grupo genrico
de clases y no tengamos mtodos
implementados que reutilizar. O
cuando nos veamos forzados por la
falta de herencia mltiple en Java.

Você também pode gostar