Diferencia entre anulación y sobrecarga

Anulando vs Sobrecarga

El método Anular y el método Sobrecarga 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 del método permite al programador proporcionar una implementación alternativa dentro de una subclase a un método ya definido dentro de su súper clase. La sobrecarga de métodos permite al programador proporcionar diferentes implementaciones a varios métodos con el mismo nombre (dentro de la misma clase).

Lo que está anulando?

Como se mencionó anteriormente, una clase puede extender una súper clase o una clase principal, en lenguajes de programación orientados a objetos. Una clase secundaria puede tener sus propios métodos o, opcionalmente, puede tener sus propias implementaciones a los métodos ya definidos en su clase principal (o una de sus clases principales). Entonces, cuando esto último sucede, se le llama método de anulación. 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 primarias, se dice que ese método está invalidado (reemplazado) por la implementación de la clase secundaria . Por lo tanto, si hay un método invalidado en una clase, el sistema de tiempo de ejecución tendrá que decidir qué método de implementación 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 usa la implementación en la clase principal. De manera similar, si se utiliza 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 el reemplazo 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 los 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 method1 (type1 t1) y method1 (type2 t2) dentro de la misma clase, entonces están sobrecargados. Entonces, el sistema tendrá que decidir cuál se ejecutará cuando se llame. Esta diferenciación se realiza al observar el tipo de parámetro (s) que se han pasado al método. Si el argumento es de tipo 1, entonces se llama la primera implementación, mientras que si es de tipo 2, entonces se llama la segunda implementación.

¿Cuál es la diferencia entre anular y sobrecargar??

Si bien, el método de anulación 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, las asignaturas de método siempre se mantienen dentro de diferentes clases, mientras que las asignaciones de método sobrecargado permanecen dentro de la misma clase. Eso significa que la anulación solo es posible en los 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 súper clase 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, la firma del método y el 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 sobrescritos, el tipo exacto de objeto que se utiliza para invocar el id de los métodos utilizado, mientras que para diferenciar entre dos métodos sobrecargados se usan los tipos de parámetros. Otra diferencia clave es que la sobrecarga se resuelve en tiempo de compilación, mientras que la sobrescritura se resuelve en tiempo de ejecución.