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.
Descargar

POLIMORFISMO