1. POLIMORFISMO
Poli: múltiple
Morfismo: formas
En programación significa que: “Un mismo objeto puede tomar DIVERSAS FORMAS.”
Polimorfismo es la posibilidad de que un método tenga el mismo nombre y produzca el mismo efecto básico
pero esté implementado de forma distinta en las subclases.
¿QUE ES?
Un objeto polimórfico es una entidad que puede contener valores de diferentes tipos durante la ejecución del
programa. Una misma conducta o MÉTODO puede ser desarrollada por diferentes objetos de diferentes clases.
En programación orientada a objetos, el polimorfismo se refiere a la propiedad por la que es posible enviar
mensajes sintácticamente iguales a objetos de tipos distintos. El único requisito que deben cumplir los objetos
que se utilizan de manera polimórfica es saber responder al mensaje que se les envía. Es posible que el único
modo de poder utilizar objetos de manera polimórfica sea que compartan una raíz común, es decir, una jerarquía
de clases, ya que esto proporciona la compatibilidad de tipos de datos necesaria para que sea posible utilizar
una misma variable de referencia (que podrá apuntar a objetos de diversas subclases de dicha jerarquía) para
enviar el mismo mensaje (o un grupo de mensajes) al grupo de objetos que se tratan de manera polimórfica.
El polimorfismo se puede clasificar en dos grandes clases
en el que el código no incluye ningún tipo de
especificación sobre el tipo de datos sobre el que se trabaja. Así, puede ser utilizado a todo tipo de datos
compatible.
deben ser explicitados y declarados uno por uno antes de poder ser utilizados. El polimorfismo dinámico unido
a la herencia es lo que en ocasiones se conoce como programación genérica.
2. ¿EN QUE SE OCUPA?
Se puede ocupar en algunos lenguajes de programación (Java, C++) permiten que dos objetos de distintas
jerarquías de clases respondan a los mismos mensajes, a través de las denominadas interfaces
En Java las interfaces se declaran mediante la palabra clave Interface. Estas se utilizan para lograr la necesaria
concordancia de tipos que hace posible el polimorfismo, también como un contrato que debe cumplir cualquier
clase que implemente una cierta interfaz, y como una forma de documentación para los desarrolladores.
Java permite apuntar a un objeto con una variable definida como tipo de clase padre.
El polimorfismo consiste en instanciar un objeto de una clase hija definiendo el tipo de la clase padre:
class Padre{}
class Hija extends Padre{}
Padre h = new Hija();
EJEMPLO:
public class animal {
public void comer(){
JOptionPane.showMessageDialog(null,"Comer es natural para los animales");
}
public void comer(String comida, int kilos){
JOptionPane.showMessageDialog(null,"El animal puede comer "+kilos+" pacas de "+comida);
}
public void crecer(){
JOptionPane.showMessageDialog(null,"Crecer es natural en todos los animales");
}
public void crecer(long altura, long peso){
JOptionPane.showMessageDialog(null,"El animal creció "+altura+" metros de altura y subió
"+peso+" kilos");
}
}
3. public class caballo extends animal{
public void comer(String comida){
JOptionPane.showMessageDialog(null,"El caballo come: "+ comida );
}
public void crecer(long altura){
JOptionPane.showMessageDialog(null,"El caballo crecio: "+ altura +" cm de altura");
}
}
public class testcaballo {
public static void main(String[] args){
caballo c = new caballo();
c.comer();
c.comer("pasto, alimento y agua");
c.comer("pasto",5);
c.crecer();
c.crecer(25L);
c.crecer(2L, 15L);
}
}
Recuerde el ejemplo del ecosistema, en donde todos los objetos de las distintas especies heredaban de una
superclase llamada Animal, que brindaba la información general de cualquier animal, independiente de su
especie. Sin embargo, cada especie hace un uso particular de cada uno de los métodos u operaciones de la
clase Animal. El método comer no se podría ejecutar de la misma manera en un caballo que para un pescado,
aunque todas las especies realicen estos métodos. A la sobre escritura o implementación específica de
métodos es la clave del polimorfismo.
VENTAJAS
Como bien dijiste, tengo a todos los animales en una colección y todos entienden el mismo mensaje sin importar
como lo resuelvan. También agregaría que para el observador (el que usa los objetos polimórficos), hay que
escribir menos códigos.
DESVENTAJAS
Hay que escribir más códigos para el objeto observador. Tengo que tener separadas las especies y hay que
mandarle un mensaje a cada una con distintos selectores.
CONCLUSION
El uso del polimorfismo dentro de la programación es una ventaja muy grande, puesto que podemos programar
objetos con características comunes y que todos estos compartan la misma superclase en una jerarquía de
clases, como si todas fueran objetos de la superclase, pudiendo ocupar los objetos siempre y cuando
compartan la misma superclase.