Skip to main content

¿Qué es la sobrecarga de funciones?

La sobrecarga de funciones es una característica de muchos lenguajes de programación donde se pueden crear múltiples métodos con el mismo nombre pero con diferentes parámetros de entrada o tipos de retorno. Esta es una característica común en la programación orientada a objetos; los constructores en particular pueden tener múltiples variantes sobrecargadas diferentes. Esencialmente, la sobrecarga de funciones es útil cuando dos funciones hacen cosas muy similares y pueden requerir múltiples tipos de entrada para hacerlo. Los constructores se pueden sobrecargar fácilmente porque no tienen un tipo de retorno explícito especificado, por lo que simplemente cambiar los parámetros de entrada de un constructor sería una sobrecarga válida.

La primera forma en que una función puede sobrecargarse es cambiando sus parámetros de entrada. Por ejemplo, uno puede considerar una función llamada "agregar" que toma como entrada dos números enteros. El propósito de esta función es bastante obvio; está destinado a encontrar la suma de dos números enteros.

Sin embargo, si uno quisiera encontrar la suma de dos flotadores o números decimales, esta función no sería aplicable. Por lo tanto, sería necesaria una segunda función sobrecargada, definida como una función llamada "agregar" que toma como entrada dos flotantes. Las funciones hacen esencialmente lo mismo, pero la sobrecarga de funciones es necesaria porque sus entradas son significativamente diferentes.

La segunda forma en que una función puede sobrecargarse es cambiar sus parámetros de entrada y su tipo de retorno. Usando el ejemplo anterior, uno puede considerar si ambas funciones "agregar" sobrecargadas tenían un tipo de retorno nulo; es decir, no devolvieron nada. Esto todavía sería una sobrecarga de función válida, pero los tipos de retorno de los dos métodos también podrían cambiarse. En otra instancia válida de sobrecarga, la función "agregar" que toma dos números enteros podría devolver esa suma de números enteros, y la función "agregar" que toma dos números decimales podría devolver esa suma de números decimales.

Sin embargo, simplemente cambiar el tipo de retorno de una función no se considera una sobrecarga de función válida. Cambiar solo el tipo de retorno de una función genera ambigüedad, ya que no está claro en la firma del método qué tipo de retorno se desea. Los parámetros también se pueden definir de forma ambigua, por lo que es muy importante que las funciones sobrecargadas se invoquen correctamente. Por ejemplo, si uno tiene una función sobrecargada que tiene un número entero como parámetro de entrada y otro que tiene un número decimal como parámetro, sería muy fácil para alguien llamar accidentalmente a la función de número decimal en lugar de la función de número entero o viceversa, porque tienen el mismo nombre. Si es posible, se deben evitar parámetros ambiguos como estos, y si no se pueden, se debe tener mucho cuidado para garantizar que se llame a la función sobrecargada adecuada en los momentos adecuados.

La sobrecarga de funciones es útil para crear funciones relacionadas con diversos tipos de entrada, y le da al código mucha flexibilidad. Una consideración final sobre las funciones sobrecargadas es que los comentarios adecuados son esenciales. Aunque puede ser claro, mediante diferentes parámetros de entrada, qué versión de una función sobrecargada es la adecuada para una situación particular, no siempre es claro con precisión qué hace la función de manera diferente de sus otros socios sobrecargados.