Icono play
Java
Polimorfismo

¿Qué es un polimorfismo en Java?

El polimorfismo es un mecanismo más de la programación orientada a objetos. Se da cuando sobreescribimos una función heredada (se lo conoce como overwrite) para que haga otra cosa que no es la que hacía originalmente.

Consiste en que las clases hijas implementan la misma función (método) pero hacen distinta cosa. Es la capacidad de algunos lenguajes de POO para hacer que desde distintos objetos al invocar un mismo método, este método pueda responder de manera distinta. 

Por ejemplo si definimos una clase instrumentos y le damos un método que sea, “sonidoqueemite” y luego creamos dos clases hijas, como guitarra y tambor, ambas clases pueden utilizar el método “sonidoqueemite”, pero su implementación será distinta, ya que tambor y guitarra emiten sonidos distintos, veamos un poco el código:

class Instrumentos {
    public void sonidoQueEmite() {
        System.out.println("tilin, tilin...");
    }
}

class Guitarra extends Instrumentos {
    public void sonidoQueEmite() {
        System.out.println("sonido de tambor");
    }
}


class Tambor extends Instrumentos {
    public void sonidoQueEmite() {
        System.out.println("sonido de guitarra");
    }
}

Herencia y polimorfismo en Java

Cuando aplicamos herencia en programación con Java (y otros lenguajes también), tenemos una clase base (clase padre) y otras clases (clases hijas) que heredan de esta métodos y atributos, mediante la palabra extends.

Las clases hijas, utilizan los mismos métodos creados en la clase padre y casi siempre realizan las mismas cosas, pero a veces las clases derivadas o hijas, si bien pertenecen al mismo tipo que la clase padre, al implementar los métodos heredados su resultado es necesariamente distinto.

Supongamos que tenemos una clase base (padre) Animal, cuyo método es desplazamiento, y sus clases derivadas (hijas) son PalomaCaballo, ambos son animales, pero se desplazan distinto, la paloma vuela y el caballo trota.

Es ahí cuando precisamos que el método desplazamiento nos dé como resultado algo distinto para cada clase hija (vuela y trota), esto se llama polimorfismo.

¿Cuándo se emplea polimorfismo en Java?

El polimorfismo se utiliza para trabajar con estructuras de datos (arrays) que son listas de objetos y permite reconocer y explotar las características similares entre distintas clases de un objeto (clase auto -objeto auto-, clase hija1 auto familiar, clase hija2 auto deportivo).

Las clases hijas llevarán el mismo prototipo de método que la clase base (padre), el método se llama de la misma manera, pero el resultado es distinto.

Podemos decir que la misma función implementada en clases hijas en una relación de dependencia con una clase padre, ejecutará la función que esté más cercana a ese nivel de dependencia.  

El polimorfismo nos permite simplificar el código y reducir la cantidad de clases base que debemos programar, pues se sobreescriben los métodos originales de acuerdo a la necesidad que presenten nuestras clases derivadas.

¿Todavía no te has apuntado a nuestro Bootcamp?
Tenemos muchos cursos para ofrecerte y ¡TOTALMENTE GRATIS! Estos son algunos de ellos: