Overload

Adam Boduch

overload - słowo kluczowe języka Delphi

Klauzulą overload możemy opatrzyć procedury i funkcje, a także metody. Dzięki temu kompilator nie będzie protestował, gdy zadeklarujemy kilka funkcji lub procedur o tej samej nazwie! Warunkiem jest jednak to, że przeładowywane metody (o tych samych nazwach) muszą różnić się listą parametrów (chodzi o to by kompilator mógł rozróżnić po typach parametrów z którymi wywoływana jest metoda, którą z przeładowanych procedur (lub funkcji) ma użyć). Nie jest więc dopuszczalna poniższa sytuacja:

function Mnozenie(X,Y : Integer) : Integer; overload;
function Mnozenie(Z,W : Integer) : Integer; overload;

Przykład prawidłowego użycia:

function Mnozenie(X, Y : Integer) : Integer; overload;
begin
  Result := X * Y;
end;

function Mnozenie(X, Y : Currency) : Currency; overload;
begin
   Result := X * Y;
end;

W programie umieściliśmy dwie funkcje o tej samej nazwie. Teraz, w zależności od kontekstu (czyli wartości parametrów), kompilator sam zadecyduje jaką funkcję wywołać:

Mnozenie(2, 2);
Mnozenie(2.2., 2.2); // tak też będzie dobrze

Metody również mogą zostać poddane procesowi przeciążania. Spójrz na poniższy przykład, w którym przeciążone zostały konstruktory (które nota bene również są specyficzną odmianą metod).

type
  TMyClass = class
  public
    constructor Create; overload;
    constructor Create(Value : String); overload;
end;

Zobacz też:

3 komentarzy

Tak. Widze trudno było sprawdzić, nie?

A więc: Przy deklaracji owej procedury czy funkcji piszemy OVERLOAD. Ale przy nagłówku reszty też piszemy? ... Resztą mam na myśli ten fragment kodu, który jest "zawartością" owej procedury czy funkcji. ;)

A więc: Przy deklaracji owej procedury czy funkcji piszemy OVERLOAD. Ale przy nagłówku reszty też piszemy? ... Resztą mam na myśli ten fragment kodu, który jest "zawartością" owej procedury czy funkcji. ;)