Diferencia clave: anulación frente a sobrecarga en C #
La diferencia clave entre anular y sobrecargar en C # es que el enlace de la llamada al método anulado a su definición ocurre en tiempo de ejecución, mientras que el enlace de la llamada al método sobrecargado a su definición ocurre en tiempo de compilación.
C # es un lenguaje de programación de propósito general desarrollado por Microsoft. La principal ventaja de C # es que es compatible con la programación orientada a objetos (OOP). Un pilar de la programación orientada a objetos es el polimorfismo. Da a un objeto tener múltiples comportamientos. Hay dos tipos de polimorfismo conocidos como anulación y sobrecarga. Este artículo analiza la diferencia entre la invalidación de métodos y la sobrecarga en C #.
CONTENIDO
1. Descripción general y diferencia clave
2. Qué es Overriding en C #
3. Qué es Overloading en C #
4. Similitudes entre Overriding y Overloading en C #
5. Comparación lado a lado: Overriding vs Overloading en C # en forma tabular
6. Resumen
¿Qué es la invalidación en C #?
Hay otro concepto importante en OOP que es la herencia. Es utilizar atributos y métodos de la clase ya existente. Mejora la reutilización del código. La clase ya existente es la clase base y la nueva clase se conoce como clase derivada. Para anular el polimorfismo, debe haber una clase base y una clase derivada. El enlace de la llamada al método reemplazado a la definición ocurre en tiempo de ejecución. Un ejemplo es el siguiente.
Figura 01: Programa C # con anulación
Según el programa anterior, la clase Shape es la clase base y contiene el método de visualización. Class Rectangle y Triangle son clases derivadas. Estas clases derivadas también tienen el mismo método de visualización con sus propias implementaciones.
Primero, se crea la variable de referencia obj. Apunta al objeto Shape. Entonces, se ejecutará el método de visualización de la clase Shape. Luego, la variable de referencia apunta al objeto Rectangle. Entonces, se ejecutará el método de visualización de la clase Rectangle. Finalmente, la variable de referencia apunta al objeto Triángulo. Entonces, se ejecutará el método de visualización de la clase Triangle. Los métodos de visualización de las clases derivadas anulan el método de visualización de la clase base.
El método a ejecutar se decide en tiempo de ejecución. La clase Shape está escrita con la palabra clave 'virtual'. Las clases Rectangle y Triangle están escritas con la palabra clave 'override'. Si estas palabras clave no se utilizan, la salida imprimirá el contenido del método de visualización de la clase Shape para todos.
¿Qué es la sobrecarga en C #?
En la sobrecarga, varios métodos tienen el mismo nombre pero con diferentes parámetros. Los parámetros pueden ser de diferentes tipos. Los métodos también pueden tener un número diferente de parámetros. La sobrecarga de métodos se produce en la misma clase. El enlace de métodos sobrecargados a la definición ocurre en tiempo de compilación. Consulte el programa C # a continuación.
Figura 02: Programa C # con sobrecarga
Según el programa anterior, la clase A tiene dos métodos con el mismo nombre llamados suma. Tienen diferentes tipos de parámetros. En el programa principal, se crea un objeto de A. La suma (2,3) invocará el método de suma con números enteros. La suma (5.1, 7.94) invocará el método de suma con valores dobles. Ambos métodos tienen el mismo nombre y el mismo número de parámetros. Pero los tipos de parámetros son diferentes. En consecuencia, se llama al método requerido. La sobrecarga también puede ocurrir si los nombres de los métodos y los tipos de parámetros son los mismos pero el número de parámetros es diferente.
¿Cuál es la similitud entre anulación y sobrecarga en C #?
Tanto la anulación como la sobrecarga en C # son tipos de polimorfismo
¿Cuál es la diferencia entre anular y sobrecargar en C #?
Diferencia del medio del artículo antes de la mesa
Anulación vs sobrecarga en C # |
|
La invalidación en C # es proporcionar una implementación específica en un método de clase derivada para un método que ya existe en la clase base. | La sobrecarga en C # consiste en crear varios métodos con el mismo nombre con diferentes implementaciones. |
Parámetros | |
En C # Overriding, los métodos tienen el mismo nombre, los mismos tipos de parámetros y la misma cantidad de parámetros. | En C # Overloading, los métodos tienen el mismo nombre pero un número diferente de parámetros o un tipo diferente de parámetros. |
Ocurrencia | |
En C #, la invalidación ocurre dentro de la clase base y la clase derivada. | En C #, la sobrecarga ocurre dentro de la misma clase. |
Tiempo de encuadernación | |
El enlace de la llamada al método reemplazado a su definición ocurre en tiempo de ejecución. | El enlace de la llamada al método sobrecargado a su definición ocurre en tiempo de compilación. |
Sinónimos | |
La anulación se denomina polimorfismo en tiempo de ejecución, polimorfismo dinámico o unión tardía. | La sobrecarga se denomina polimorfismo en tiempo de compilación, polimorfismo estático o enlace temprano. |
Resumen: anulación frente a sobrecarga en C #
Overriding y Overloading son dos tipos de polimorfismo. La diferencia entre anular y sobrecargar en C # es que el enlace de la llamada al método anulado a su definición ocurre en tiempo de ejecución, mientras que el enlace de la llamada al método sobrecargado a su definición ocurre en tiempo de compilación.