Polimorfismo. Imagen elguille.info |
Como estudiante de Ing. en Sistemas me encargaron investigar lo que es polimorfismo en java, en Internet encontre muchos ejemplos, todos ellos avanzados y para mi, difíciles de entender, claro por que era la primera vez que veía lo que es polimorfismo, incluso algunos compañeros ya programadores desconocían el termino por haber aprendido a programar en la practica y no en teoría.
Al final comprendí lo que es polimorfismo y su aplicación, como el día del examen no pude asistir por causas personales me encargaron un resumen de polimorfismo para pasar el examen, esto es lo que entregare y ademas les servirá para comprender lo que es polimorfismo básico, a partir de este pequeño pero claro razonamiento pueden ver y entender ejemplos mas complejos que hay en Internet.
El polimorfismo es muy parecido o más bien tiene sus bases
en la capacidad de herencia que
presentan los lenguajes orientados a objetos como es el caso de java.
Como sabemos con la
herencia las clases padres comparten métodos con las clases hijas, bueno
con el polimorfismo se hace prácticamente lo mismo pero en vez de clases padres
se tiene clases abstractas.
Las clases abstractas tienen métodos abstractos es decir métodos
que solo están declarados sus nombres pero su forma de “actuar” difiere de una
clase hija a otra. Los métodos actúan dependiendo de la clase que haga mención del
método declarado en la clase abstracta.
Veamos la diferencia de una clase con herencia y de una
clase abstracta con polimorfismo:
Herencia:
Clase padre
Métodos: Escribir (escribe un texto en un archivo), leer (lee un archivo escrito) |
Clase hija: Métodos: ordenar (ordena una serie de caracteres en un
texto), Escribir
(escribe un texto en un archivo)
|
Clase hija: Métodos: desordenar (desordena una serie de caracteres en
un texto), Escribir
(escribe un texto en un archivo)
|
Como podrán ver en esta representación gráfica se puede
apreciar que una clase padre comparte métodos completamente iguales a sus
subclases, las clases hijas, las clases hijas tienen sus propios métodos pero también
pueden o no hacer uso de los métodos de la clase padre.
Polimorfismo:
Clase
abstracta
Métodos: Escribir, leer |
Subclase 1: Método: Escribir (Escribir números en un archivo),
ordenar (ordena una serie de caracteres en un texto).
|
Subclase 2: Método: Escribir (Escribe todas las pulsaciones del teclado),
desordenar (desordena una serie de caracteres en un texto).
|
Como podemos ver en este ejemplo solo se declaran los
nombres de los métodos y en las subclases se declaran las funciones de los métodos,
en este caso el método escribir hace cosas diferentes en cada una de las
subclases pero sigue usando el método escribir de la clase abstracta.
Para terminar un ejemplo de polimorfismo en java es el
siguiente:
/** * * @author Daniel – CLASE ABSTRACTA */ abstract class Figura { //se declaran metodos sin comportamiento abstract void area(); abstract void perimetro(); } /** * * @author Daniel – SUBCLASE 1 */ class Cuadrado extends Figura { void area() { System.out.println("Aqui se calcula el area de un cuadrado"); } void perimetro() { System.out.println("aqui se calcula el perimetro de un cuadrado"); }
}
/** * * @author Daniel – SUBLCASE 2 */ class Circulo extends Figura { void area() { System.out.println("aqui se puede calcular el area de un circulo"); } void perimetro() { System.out.println("Aqui se calcula el perimetro de un circulo"); } } /** * * @author Daniel –MAIN */ Public class Polimorfismo { public static void main(String[] args) { Figura figura1 = new Circulo(); figura1.area(); figura1.perimetro(); figura1 = new Cuadrado(); figura1.area(); figura1.perimetro(); } }
- Cada uno de los bloques va en una clase
- Cada bloque empieza con el comentario del nombre del autor
- El código lo pueden copiar y probar, esta funcionando.
Recomienda el blog !
excelente explikacion mis respetos
ResponderBorrarSuper una de las explicaciones mas entendibles que he leído
ResponderBorrary que diferencia tendria con la herencia?
ResponderBorrarHay que leerlo de nuevo mi estimado, explico completamente la diferencia con la herencia.
Borraren verdad ayudas...
ResponderBorrargraxias hermano me ayudastes a despejar la duda
ResponderBorrarEsas formas sencillas de entender y explicar requiere el mundo :D
ResponderBorrarsi asi nos explicaran a nosotros en la u
ResponderBorrarMuchas gracias. Mañana tengo examen de esto mismo y me sirvió de mucho.
ResponderBorrarGracias!!!! La verdad para empezar si toca casi que con plastilina. Pero aclaró mucho el concepto. Mil gracias.
ResponderBorrarmuy buena explicacion.... me gusto el codigo muy sencillo para poder comprender
ResponderBorrarMuy bueno. Gracias
ResponderBorrarGracias, ya entendí
ResponderBorraraaaaaa aun no entiendo muy bien, pero me sirvió de mucho saber la diferencia :)
ResponderBorrarentendi.... muy bien gracias x ponerlo
ResponderBorrarHermano!...Vienes del futuro!
ResponderBorrarMuchas gracias. Claro y conciso. +++
ResponderBorrar