Skip to main content

¿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 los 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 llama. 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 conoce como sobrecarga de funciones.

Un ejemplo simple de sobrecarga de métodos sería un método que calcule el área de un cuadrado. Puede definirse como getArea (Square s). Este método podría sobrecargarse para calcular adicionalmente el área del círculo agregando el método getArea (Círculo c).

El requisito principal para la sobrecarga de métodos es que los métodos compartan el mismo nombre. Sus firmas de método (el nombre del método, el número de parámetros y los tipos de datos de parámetros) deberían ser únicos. De esta manera, 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 empleado con dos campos (nombre y fecha de nacimiento o fecha de nacimiento) podría tener los siguientes constructores sobrecargados: Empleado (), Empleado (nombre) y Empleado (nombre, fecha de nacimiento). El primer constructor crea un objeto de empleado con 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 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 método único. En el ejemplo de getArea (), aunque físicamente hay dos métodos, la persona que llama se presenta con un único método lógico getArea (). De esta forma, getArea () se puede expandir para trabajar en otras formas (triángulos, trapecios, 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 realiza un cálculo complejo podría recibir 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 se puede sobrecargar. El nuevo método tendrá la firma anterior y será invocado por el código existente. No contendrá ninguna lógica en sí misma, y ​​simplemente llamará al método modificado y pasará por defecto de "forma antigua" para el nuevo parámetro. El nuevo código llamará al método modificado y pasará el nuevo parámetro con el valor apropiado, antigua o nueva.

La sobrecarga de métodos es un tipo de polimorfismo, en el que el mismo método lógico puede, en la práctica, usarse de múltiples maneras. La sobrecarga de métodos no es lo mismo que la anulación de métodos. La anulación de métodos es donde la definición de un método en una clase primaria es cambiada por una clase secundaria. En este caso, ambos métodos tendrán la misma firma.