Anulación vs 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 invalidació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 permite al programador proporcionar diferentes implementaciones para múltiples métodos con el mismo nombre (dentro de la misma clase).
¿Qué es anular?
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 para métodos ya definidos en su clase principal (o una de sus clases principales). Entonces, cuando ocurre 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 utiliza un objeto de la clase principal para invocar el método anulado, se utiliza la implementación en la clase principal. De manera similar, si se usa un objeto de la clase secundaria, 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 característica 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 función 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 método1 (tipo1 t1) y método1 (tipo2 t2) dentro de la misma clase, entonces están sobrecargados. Luego, el sistema tendrá que decidir cuál ejecutar cuando sea llamado. Esta diferenciación se realiza observando el tipo de parámetro (s) que se han pasado al método. Si el argumento es de tipo1, se llama a la primera implementación, mientras que si es de tipo2, se llama a la segunda implementación.
¿Cuál es la diferencia entre anulación y sobrecarga?
Si bien se utilizan la anulación y la sobrecarga de métodos para proporcionar un método con diferentes implementaciones, existen diferencias clave entre estos dos conceptos / técnicas. En primer lugar, las asignaturas de sobrecarga de métodos siempre permanecen dentro de diferentes clases, mientras que las asignaturas de sobrecarga de métodos permanecen dentro de la misma clase. Eso significa que la sobrecarga 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 retorno, pero los métodos sobrecargados deben diferir en la firma o en el tipo de retorno (el nombre debe ser el mismo). Para diferenciar entre dos métodos anulados, se utiliza el tipo exacto de objeto que se utiliza para invocar el ID de método utilizado, mientras que para diferenciar entre dos métodos sobrecargados se utilizan los tipos de 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.