Anular vs sobrecarga
El método primordial y la sobrecarga de métodos 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 primordial del método permite al programador proporcionar una implementación alternativa dentro de una subcase a un método ya definido dentro de su súper clase. La sobrecarga de métodos permite al programador proporcionar diferentes implementaciones a múltiples métodos con el mismo nombre (dentro de la misma clase).
Que esta primordial?
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 infantil puede tener sus propios métodos o opcionalmente puede tener sus propias implementaciones a los métodos ya definidos en su clase principal (o en una de sus clases de nietos). Entonces, cuando esto último ocurre, se llama método anular. En otras palabras, si la clase infantil proporciona una implementación a un método con la misma firma y tipo de retorno como método ya definido en una de sus clases principales, se dice que ese método está anulado (reemplazado) por la implementación de la clase infantil. Entonces, si hay un método anulado en una clase, el sistema de tiempo de ejecución tendrá que decidir qué método se utiliza. Este problema se resuelve observando el tipo exacto de objeto que se usa para invocarlo. Si se usa un objeto de la clase principal para invocar el método anulado, entonces se utiliza la implementación en la clase principal. Del mismo modo, si se trata de un objeto de la clase infantil que se usa, entonces se usa la implementación de la clase infantil. Lenguajes de programación modernos como Java, Eifell, C ++ y Python permiten el método anular.
Que esta sobrecargada?
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.Red, 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 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 observando el tipo de parámetros que se han pasado al método. Si el argumento es de Tipo1, entonces se llama la primera implementación, mientras que si es de Type2, se llama a la segunda implementación.
¿Cuál es la diferencia entre anular y sobrecargar??
Aunque se utilizan la anulación de métodos 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, los sujetos de anulación de métodos siempre se mantienen dentro de diferentes clases, mientras que los sujetos de sobrecarga de métodos se mantienen dentro de la misma clase. Eso significa que anular 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, firma del método y el tipo de retorno, pero los métodos sobrecargados deben diferir en la firma o el tipo de retorno (el nombre debe ser el mismo). Para diferenciar entre dos métodos anulados, el tipo exacto de objeto que se utiliza para invocar la ID de métodos utilizado, mientras que para diferenciar entre dos métodos sobrecargados se utilizan. Otra diferencia clave es que la sobrecarga se resuelve en el momento de la compilación, mientras que la anulación se resuelve en el tiempo de ejecución.