Está en la página 1de 18

POLIMORFISMO

UNIDAD 4
POLIMORFISMO
El Polimorfismo es la respuesta distinta frente a una llamada
a un método dependiendo de la naturaleza del objeto.

Consiste en definir métodos 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 conexión 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 través de esta referencia
Variable polimorfica
• Una variable referencia es polimórfica cuando
su tipo de declaración 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 genérico pero
que no sentido instanciar (crear objetos de
ella).
• Métodos abstractos: Un método abstracto
significa que tiene que ser sobrescrito. No está
implementado. Una clase con uno o varios
métodos abstractos tiene que ser declarada
abstracta.
• No obstante una clase abstracta no tiene
porque tener métodos abstractos.
INTERFACES (herencia múltiple)
• Los interfaces en Java nos solucionan en parte
la no existencia de la herencia múltiple.

• Los interfaces son un tipo de clase especial


que no implementa ninguno de sus métodos.
Todos son abstractos. Por tanto no se pueden
instanciar.
• De los interfaces también 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 métodos de este,
deberá ser definida como abstracta.
• ¿Para qué se utiliza?
• Para permitir la herencia múltiple (ya que la
herencia en Java sólo permite heredar de una
sola clase)
• Definen un comportamiento (o funcionalidad)
genérico, ignorando los aspectos relacionados
con su implementación.
• Las interfaces que implementa una clase se
comportan igual que las superclases en lo que
respecta al uso del polimorfismo.
• Subclase: Necesitemos hacer una
especialización de la superclase mediante
sobre escritura o añadiendo nuevos métodos.

• Clase abstracta: Queremos definir un grupo


genérico de clases y además se tiene algunos
métodos implementados que reutilizar.
• Interface: Queremos definir un grupo genérico
de clases y no tenemos métodos
implementados que reutilizar. O cuando nos
veamos forzados por la falta de herencia
múltiple en Java.
Interface vs. Clase Abstracta
• Un interface no puede implementar ningún
método.
• Un interface no forma parte de la jerarquía
de clases.
• Una clase puede implementar n interfaces
pero solo una clase.
• El objetivo de un método abstracto es forzar
una interfaz (API) pero no una
implementación
• Haremos un interface cuando queramos
definir un grupo genérico de clases y no
tengamos métodos implementados que
reutilizar. O cuando nos veamos forzados por
la falta de herencia múltiple en Java.

También podría gustarte