El polimorfismo es una de las características de OOP que nos permite realizar una sola acción de diferentes formas. Por ejemplo, digamos que tenemos una clase Animal que tiene un metodo sound(). Dado que esta es una clase genérica, no podemos darle una implementación como: Roar, Meow, Oink, etc. Teníamos que dar un mensaje genérico.

public class Animal{
   ...
   public void sound(){
      System.out.println("Animal is making a sound");   
   }
}

Ahora digamos que tenemos dos subclases de la clase Animal: Horse es Cat extender (ver herencia) Animal clase. Podemos proporcionar la implementación con el mismo método que este:

public class Horse extends Animal{
...
    @Override
    public void sound(){
        System.out.println("Neigh");
    }
}

es

public class Cat extends Animal{
...
    @Override
    public void sound(){
        System.out.println("Meow");
    }
}

Como puede ver, aunque teníamos la acción común para todas las subclases sound() pero había varias formas de realizar la misma acción. Este es un ejemplo perfecto de polimorfismo (una característica que nos permite realizar una sola acción de diferentes formas). No tendría sentido simplemente llamar al método sound () genérico ya que cada Animal tiene un sonido diferente. Entonces podemos decir que la acción que realiza este método se basa en el tipo de objeto.

¿Qué es el polimorfismo en la programación?

El polimorfismo es la capacidad de un método para hacer diferentes cosas en función del objeto sobre el que actúa. En otras palabras, el polimorfismo le permite definir una interfaz y tener múltiples implementaciones. Como vimos en el ejemplo anterior, hemos definido el método sound () y tenemos múltiples implementaciones en las diferentes subclases-2.
El método sound () que se llamará se determina en tiempo de ejecución, por lo que el ejemplo que proporcionamos anteriormente es un ejemplo de polimorfismo en tiempo de ejecución.

Los tipos de polimorfismo y la sobrecarga y anulación de métodos se tratan en tutoriales separados. Puedes denunciarlos aquí:
1. Sobrecarga de métodos en Java: este es un ejemplo de tiempo de compilación (o polimorfismo estático)
2. Sustitución de métodos en Java: este es un ejemplo de tiempo de ejecución (o polimorfismo dinámico)
3. Tipos de polimorfismos: tiempo de ejecución y tiempo de compilación: este es nuestro próximo tutorial en el que hemos cubierto los tipos de polimorfismos en detalle. Le recomendaría que sobrecargue y anule el método antes de abordar este tema.

Escribamos el código completo del mismo:

leer  Java: clase estática, bloque, métodos y variables

Ejemplo 1: polimorfismo en Java

Ejemplo de polimorfismo en tiempo de ejecución:

Animal.java

public class Animal{
   public void sound(){
      System.out.println("Animal is making a sound");   
   }
}

horse.java

class Horse extends Animal{
    @Override
    public void sound(){
        System.out.println("Neigh");
    }
    public static void main(String args[]){
    	Animal obj = new Horse();
    	obj.sound();
    }
}

Producción:

Neigh

Cat.java

public class Cat extends Animal{
    @Override
    public void sound(){
        System.out.println("Meow");
    }
    public static void main(String args[]){
    	Animal obj = new Cat();
    	obj.sound();
    }
}

Producción:

Meow

Ejemplo 2: tiempo de compilación de polimorfismo

El método de sobrecarga, por otro lado, es un ejemplo de polimorfismo en tiempo de compilación.

class Overload
{
    void demo (int a)
    {
       System.out.println ("a: " + a);
    }
    void demo (int a, int b)
    {
       System.out.println ("a and b: " + a + "," + b);
    }
    double demo(double a) {
       System.out.println("double a: " + a);
       return a*a;
    }
}
class MethodOverloading
{
    public static void main (String args [])
    {
        Overload Obj = new Overload();
        double result;
        Obj .demo(10);
        Obj .demo(10, 20);
        result = Obj .demo(5.5);
        System.out.println("O/P : " + result);
    }
}

Aqui esta el metodo demo() está sobrecargado 3 veces: el primer método tiene 1 parámetro int, el segundo método tiene 2 parámetros int y el tercero tiene un parámetro doble. El método que se debe llamar está determinado por los argumentos que pasamos al llamar a los métodos. Esto le pasa a tiempo de ejecución tiempo de compilación por lo tanto este tipo de polimorfismo se conoce como polimorfismo de tiempo de compilación.

Producción:

a: 10
a and b: 10,20
double a: 5.5
O/P : 30.25

Por avivcas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *