¿Qué es la sobrecarga de métodos?

La sobrecarga de métodos es una característica en la mayoría de los lenguajes de programación orientados a objetos en la que dos o más métodos comparten el mismo nombre pero tienen parámetros diferentes. Específicamente, el número, el tipo de datos y / o el orden de los parámetros son diferentes. Cuando se compila el código, el método correcto se seleccionará automáticamente en función de cómo se llame. Los métodos también se conocen como funciones en algunos lenguajes de programación, por lo que la sobrecarga de métodos a veces se denomina sobrecarga de funciones.

Un ejemplo simple de sobrecarga de métodos sería un método que calcula el área de un cuadrado. Podría definirse como getArea (Square s). Este método podría estar sobrecargado para calcular adicionalmente el área del círculo agregando el método getArea (Circle c).

El requisito principal para la sobrecarga de métodos es que los métodos compartan el mismo nombre. Las firmas de sus métodos (el nombre del método, la cantidad de parámetros y los tipos de datos de los parámetros) deberían ser únicas. De esta forma, el compilador puede determinar qué método ejecutar.

Los constructores, los métodos utilizados para crear instancias de objetos, a menudo están sobrecargados. Esto se hace para inicializar un objeto con valores no predeterminados. Por ejemplo, un objeto de empleado con dos campos (nombre y fecha de nacimiento, o dob) puede tener los siguientes constructores sobrecargados: Employee (), Employee (name) y Employee (name, dob). El primer constructor crea un objeto de empleado con un nombre en blanco y campos dob. El segundo establece el campo de nombre, pero deja el campo dob en blanco, y el tercero define los campos de nombre y dob.

La sobrecarga de métodos se realiza con mayor frecuencia para hacer que más de un método aparezca lógicamente como un solo método. En el ejemplo de getArea (), aunque físicamente hay dos métodos, al llamador se le presenta un único método lógico getArea (). De esta manera, getArea () se puede expandir para trabajar en otras formas (triángulos, trapezoides, etc.) sin dejar de presentarse lógicamente como un método único.

Los métodos también están sobrecargados para preservar la compatibilidad con versiones anteriores. Un método que hace un cálculo complejo podría tener un nuevo requisito para realizar opcionalmente el mismo cálculo con un ligero cambio. Se agrega un nuevo parámetro al método que determinará cómo realizar el cálculo: la forma antigua o la nueva.
Para evitar tener que buscar todos los casos en los que se llama al método y agregar el nuevo parámetro, el método puede sobrecargarse. El nuevo método tendrá la firma anterior y el código existente lo llamará. No contendrá ninguna lógica en sí mismo, y simplemente llamará al método modificado y pasará por defecto «modo antiguo» para el nuevo parámetro. El nuevo código llamará al método modificado y pasará el nuevo parámetro con el valor apropiado, de forma antigua o nueva.
La sobrecarga de métodos es un tipo de polimorfismo en el que el mismo método lógico se puede utilizar, en la práctica, de múltiples formas. La sobrecarga de métodos no es lo mismo que la invalidación de métodos. La anulación de método es cuando una clase secundaria cambia la definición de un método en una clase principal. En este caso, ambos métodos tendrán la misma firma.