Anulación frente a sobrecarga
El método Overriding y el método Overloading son dos conceptos/técnicas/características que se encuentran en algunos lenguajes de programación. Ambos conceptos permiten al programador proporcionar diferentes implementaciones para métodos con el mismo nombre. La anulación de métodos permite al programador proporcionar una implementación alternativa dentro de una subclase a un método ya definido dentro de su superclase. La sobrecarga de métodos le permite al programador proporcionar diferentes implementaciones para múltiples métodos con el mismo nombre (dentro de la misma clase).
¿Qué es la anulación?
Como se mencionó anteriormente, una clase puede extender una superclase o una clase padre, en lenguajes de programación orientados a objetos. Una clase secundaria puede tener sus propios métodos u, opcionalmente, puede tener sus propias implementaciones de métodos ya definidos en su clase principal (o en una de sus clases principales principales). Entonces, cuando sucede lo último, se llama anulación de método. En otras palabras, si la clase secundaria proporciona una implementación a un método con la misma firma y tipo de retorno que un método ya definido en una de sus clases principales, se dice que ese método es anulado (reemplazado) por la implementación de la clase secundaria. Entonces, si hay un método anulado en una clase, el sistema de tiempo de ejecución tendrá que decidir qué implementación de método se usa. Este problema se resuelve observando el tipo exacto de objeto que se utiliza para invocarlo. Si se usa un objeto de la clase principal para invocar el método anulado, se usa la implementación en la clase principal. De manera similar, si se usa un objeto de la clase secundaria, entonces se usa la implementación de la clase secundaria. Los lenguajes de programación modernos como Java, Eifell, C++ y Python permiten la anulación de métodos.
¿Qué es la sobrecarga?
La sobrecarga de métodos es una función proporcionada por algunos lenguajes de programación para crear más de un método con el mismo nombre, pero con diferentes tipos de entrada y salida. En lenguajes de programación modernos como Java, C, C++ y VB. NET, esta característica está disponible. Puede sobrecargar un método creando otro método con el mismo nombre pero con una firma de método diferente o un tipo de retorno diferente (o ambos). Por ejemplo, si tiene el método 1 (tipo 1 t1) y el método 1 (tipo 2 t2) dentro de la misma clase, entonces están sobrecargados. Luego, el sistema tendrá que decidir cuál se ejecutará cuando se llame. Esta diferenciación se realiza observando el tipo de parámetro(s) que se ha pasado al método. Si el argumento es de tipo 1, se llama a la primera implementación, mientras que si es de tipo 2, se llama a la segunda implementación.
¿Cuál es la diferencia entre anular y sobrecargar?
Aunque la anulación de métodos y la sobrecarga de métodos se utilizan para proporcionar un método con diferentes implementaciones, existen diferencias clave entre estos dos conceptos/técnicas. En primer lugar, los sujetos de anulación de métodos siempre permanecen dentro de diferentes clases, mientras que los sujetos de sobrecarga de métodos permanecen dentro de la misma clase. Eso significa que la anulación solo es posible en lenguajes de programación orientados a objetos que permiten la herencia, mientras que la sobrecarga también puede estar disponible en un lenguaje no orientado a objetos. En otras palabras, anula un método en la superclase pero sobrecarga un método dentro de su propia clase.
Otra diferencia es que los métodos anulados tienen el mismo nombre de método, firma de método y tipo de devolución, pero los métodos sobrecargados deben diferir en la firma o el tipo de devolución (el nombre debe ser el mismo). Para diferenciar entre dos métodos anulados, se usa el tipo exacto de objeto que se usa para invocar los métodos id, mientras que para diferenciar entre dos métodos sobrecargados se usan los tipos de los parámetros. Otra diferencia clave es que la sobrecarga se resuelve en tiempo de compilación, mientras que la anulación se resuelve en tiempo de ejecución.