Przeciążanie metod

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

Przeciążanie metod polega na zdefiniowaniu w tej samej klasie kilku metod o tej samej nazwie, ale z różnymi listami parametrów. Różnice mogą dotyczyć:

  • liczby parametrów,
  • typów parametrów,
  • kolejności typów parametrów.

W językach takich jak C# lub Java kompilator wybiera odpowiednią wersję metody na podstawie argumentów przekazanych podczas wywołania.

Przykład w C

public class Point
{
    public void Move(int x, int y) { }
    public void Move(int x, int y, int z) { }
    public void Move(Point newPt) { }
}

Wszystkie trzy metody mają nazwę Move, ale różnią się parametrami. Oznacza to, że są przeciążone.

Przykładowe wywołania:

Point p = new Point();
p.Move(10, 20);        // wywołuje Move(int x, int y)
p.Move(10, 20, 30);    // wywołuje Move(int x, int y, int z)
p.Move(new Point());   // wywołuje Move(Point newPt)

Czego nie należy mylić?

Przeciążanie metod nie oznacza przeciążania operatorów. Przeciążanie operatorów dotyczy symboli takich jak +, -, ==.

Nie są to też konstruktory, ponieważ konstruktor musi mieć nazwę taką samą jak klasa i nie ma typu zwracanego. W przykładzie metody nazywają się Move, a klasa Point.

Ważna zasada

Sam typ zwracany nie wystarcza do przeciążenia metody. Metody muszą różnić się listą parametrów, np. liczbą lub typem argumentów.