Skip to content

Sobrecarga de métodos (Overloading)

Las funciones y procedimientos son una parte importante en Delphi y desde Delphi 4, se nos permite trabajar con sobrecarga de métodos. Esto es, funciones y procedimientos que admiten parámetros predeterminados (haciendo que los parámetros sean opcionales), y lo mejor de todo es que permite que dos o más rutinas posean un mismo nombre pero funcionen como rutinas completamente diferentes. A esto se le llama Method Overloading.

Overloading

Para ser corto, la sobrecarga de métodos u Overloading es declarar más de una rutina con un mismo nombre, pero con la diferencia de poseer diferentes números de parámetros y tipos.

Ejemplo de Overloading:

{ Los métodos sobrecargados deben declararse con la directiva overload }

function SumaToStr(A, B :integer): string; overload;
begin
   Result := IntToStr(A + B) ;
end;

function SumaToStr(A, B : extended; Decimales:integer): string; overload;
begin
   Result := FloatToStrF(A + B, ffFixed, 18, Decimales) ;
end;

function SumaToStr(A: integer; B : extended; Decimales:integer): string; overload;
begin
   Result := FloatToStrF(A + B, ffFixed, 18, Decimales) ;
end;

Estas declaraciones crean funciones con el mismo nombre pero con diferente tipos y números de parámetros, según los parámetros que pasemos, Delphi elegirá la implementación correcta.

Ahora, ¿Qué pasa si enviamos un número o tipo de parámetros de los cuales no se encuentra la implementación? Por ejemplo si llamamos a la siguiente función:

vResultado := SumaToStr(10.12, 2.45);

En este caso, obtendremos un error, ya que no existe una implementación para estos tipos de parámetros, el error sería el siguiente:

"there is no overloaded version of 'SumaToStr' that can be called with these arguments."