Diferencia entre tiempo de compilación y polimorfismo en tiempo de ejecución en Java

La palabra polimorfismo significa tener muchas formas. En palabras simples, podemos definir el polimorfismo como la capacidad de un mensaje para mostrarse en más de una forma. En este artículo, veremos la diferencia entre dos tipos de polimorfismos, tiempo de compilación y tiempo de ejecución. 

Polimorfismo en tiempo de compilación: cada vez que un objeto está vinculado con su funcionalidad en el momento de la compilación, esto se conoce como polimorfismo en tiempo de compilación. En tiempo de compilación, Java sabe qué método llamar comprobando las firmas del método. Entonces esto se llama polimorfismo en tiempo de compilación o enlace estático o temprano. El polimorfismo en tiempo de compilación se logra mediante la sobrecarga de métodos . La sobrecarga de métodos dice que puede tener más de una función con el mismo nombre en una clase que tiene un prototipo diferente. La sobrecarga de funciones es una de las formas de lograr el polimorfismo, pero depende de la tecnología y del tipo de polimorfismo que adoptemos. En java, logramos la sobrecarga de funciones en tiempo de compilación. El siguiente es un ejemplo donde se puede observar el polimorfismo en tiempo de compilación. 

Java

// Java program to demonstrate
// compile-time polymorphism
public class GFG {
 
    // First addition function
    public static int add(int a, int b)
    {
        return a + b;
    }
 
    // Second addition function
    public static double add(
        double a, double b)
    {
        return a + b;
    }
 
    // Driver code
    public static void main(String args[])
    {
        // Here, the first addition
        // function is called
        System.out.println(add(2, 3));
 
        // Here, the second addition
        // function is called
        System.out.println(add(2.0, 3.0));
    }
}
Producción: 

5
5.0

 

Polimorfismo en tiempo de ejecución: cada vez que un objeto está vinculado con la funcionalidad en tiempo de ejecución, esto se conoce como polimorfismo en tiempo de ejecución. El polimorfismo en tiempo de ejecución se puede lograr mediante la anulación de métodos . La máquina virtual de Java determina el método adecuado para llamar en el tiempo de ejecución, no en el momento de la compilación. También se denomina enlace dinámico o tardío. La anulación del método dice que la clase secundaria tiene el mismo método declarado en la clase principal. Significa que si la clase secundaria proporciona la implementación específica del método que ha proporcionado una de sus clases principales, se conoce como anulación de método. El siguiente es un ejemplo donde se puede observar el polimorfismo en tiempo de ejecución.

Java

// Java program to demonstrate
// runtime polymorphism
 
// Implementing a class
class Test {
 
    // Implementing a method
    public void method()
    {
        System.out.println("Method 1");
    }
}
 
// Defining a child class
public class GFG extends Test {
 
    // Overriding the parent method
    public void method()
    {
        System.out.println("Method 2");
    }
 
    // Driver code
    public static void main(String args[])
    {
        Test test = new GFG();
 
        test.method();
    }
}
Producción: 

Method 2

 

La siguiente tabla demuestra la diferencia entre el polimorfismo en tiempo de ejecución y el polimorfismo en tiempo de compilación:

Polimorfismo de tiempo de compilación Tiempo de ejecución Polimorfismo
En Compile time Polymorphism, el compilador resuelve la llamada. En el polimorfismo en tiempo de ejecución, el compilador no resuelve la llamada.
También se conoce como enlace estático, enlace temprano y sobrecarga también. También se conoce como enlace dinámico, enlace tardío y anulación.
La sobrecarga de métodos es el polimorfismo en tiempo de compilación donde más de un método comparte el mismo nombre con diferentes parámetros o firmas y diferentes tipos de retorno. La anulación de métodos es el polimorfismo en tiempo de ejecución que tiene el mismo método con los mismos parámetros o firma pero asociado con clases diferentes comparadas.
Se logra mediante sobrecarga de funciones y sobrecarga de operadores. Se logra mediante funciones virtuales y punteros.
Proporciona una ejecución rápida porque el método que debe ejecutarse se conoce temprano en el momento de la compilación. Proporciona una ejecución lenta en comparación con el enlace temprano porque el método que debe ejecutarse se conoce en el tiempo de ejecución.
El polimorfismo en tiempo de compilación es menos flexible ya que todo se ejecuta en tiempo de compilación. El polimorfismo en tiempo de ejecución es más flexible ya que todo se ejecuta en tiempo de ejecución.
La herencia no está involucrada.  La herencia está involucrada.

Publicación traducida automáticamente

Artículo escrito por adware y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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