Páginas

11/8/15

Polimorfismo Java

Polimorfismo Java.

Polimorfismo Java, que es el polimorfismo y sus tipos.




El Polimorfismo es uno de los conceptos generales que van de la mano con la programación orientada a objetos OOP, en si el polimorfismo en Java se refiere a las distintas formas que puede tener una variable, objeto o método creado.
Hay dos tipos establecidos de polimorfismo:
  • El polimorfismo en tiempo de ejecución (runtime) o dinámico, que lo podemos implementar con la sobre escritura (overriding) de métodos.
  • El polimorfismo en tiempo de compilación (compile time) o estático, que lo podemos implementar en la sobrecarga (overloading) de métodos
Te puede interesar: Diferencias entre override y overload.

Hay una confusión entre algunas programadores a la hora de aceptar que la sobrecarga de métodos también es un Polimorfismo, básicamente si nos fijamos en el concepto se podría afirmar que si, ya que el mismo método puede tomar distintas formas dependiendo de los parámetros recibidos, como ya aclaramos un poco lo que es la teoría vamos aplicar los dos tipos de Polimorfismo en la práctica.

Polimorfismo en tiempo de ejecución (runtime), es el más usado y se podría implementar con dos clases hijas que hereden de una clase padre. Este es el diagrama de clases del ejemplo:
Polimorfismo Java
Polimorfismo Java
Como vemos en la imagen, hay una clase Persona con un método que devuelve un String y dos clases Hombre y Mujer que heredan de Persona, ambas clases implementan el método de distinta manera y así logramos implementar el polimorfismo.

Clase Persona:
public class Persona {
 public String quienSoy() {
  return "Soy una persona";
 }
}
   
Clase Hombre:
public class Hombre extends Persona {
 public String quienSoy() {
  return "Soy un hombre";
 }
}
   
Clase Mujer:
public class Mujer extends Persona {
 public String quienSoy() {
  return "Soy una mujer";
 }
}
   
Compilar codigo:
 public static void main(String[] args) {
  Persona persona = new Persona();
  Persona persona2 = new Hombre();
  Persona persona3 = new Mujer();

  System.out.println(persona.quienSoy());
  System.out.println(persona2.quienSoy());
  System.out.println(persona3.quienSoy());

 }
   
Esta es la salida del ejemplo:
Polimorfismo DatoJava
Polimorfismo DatoJava
En el código anterior a la hora de compilar instanciamos la clase Persona de distintas formas y como en las clases Hombre y Mujer el método quienSoy esta implementado de formas distintas podemos crear el Polimorfismo, se denomina polimorfismo en tiempo de ejecución (runtime) o dinámico porque desde que comenzamos a sobrescribir los métodos en las clases hijas el compilador no tiene idea de cuál método vamos a llamar en tiempo de compilación compile time y dada la situación la maquina virtual de java JVM entra en acción y en tiempo de ejecución runtime decide a cual método invocar.

Cuando no entendemos muy bien el concepto del polimorfismo o subestimamos su potencial (a nivel de código) nos preguntaremos en que parte del código debería aplicar el polimorfismo, o que esto no sirve de mucho y solo es un concepto más de Java, la verdad es que el polimorfismo en Java es una herramienta que cualquier desarrollador debería aprender y comenzar aplicar en sus códigos, todas las súper librerías ponen en práctica el polimorfismo, las interfaces van de la mano con el polimorfismo.

Siguiendo con la entrada ahora vamos a ver el polimorfismo en tiempo de compilación (compile time) en el que lo que hacemos es sobrecarga de métodos. No hay mucho que explicar aquí, este es el código:
 public String quienSoy() {
  return "Soy una persona";
 }

 public String quienSoy(String nombre) {
  return "Soy " + nombre;
 }

 public String quienSoy(String nombre, String apellido) {
  return "Soy " + nombre + " " + apellido;
 }
    
El polimorfismo es en tiempo de ejecución (compile time) porque tiene tres formas diferentes de invocarlo, y dada esta situación el compilador si puede resolver a que método invocar sin necesidad de que JVM intervenga, esto es todo en este Dato Java, es un concepto que a veces puede enredarnos, es algo sencillo, comienza de menos a más, en la práctica esta el profesional. Suerte, si tienes una duda o una acotación no olvides comentar, y si te gusto la entrada no olvides compartir el conocimiento.

2 comentarios :