Skip to main content

Co to jest przeciążenie metody?

Przeciążenie metody jest funkcją w większości obiektowych języków programowania, w których dwie lub więcej metod mają tę samą nazwę, ale mają różne parametry.W szczególności liczba, typ danych i/lub kolejność parametrów jest inna.Po skompilowaniu kodu poprawna metoda zostanie automatycznie wybrana na podstawie tego, jak się nazywa.Metody są również znane jako funkcje w niektórych językach programowania, więc przeciążenie metod jest czasem określane jako przeciążenie funkcji.

Prostym przykładem przeciążenia metodą byłoby metodę obliczającą obszar kwadratu.Można to zdefiniować jako getarea (kwadrat).Metodę tę można przeciążyć, aby dodatkowo obliczyć obszar koła, dodając metodę getarea (okrąg c).

Głównym wymogiem przeciążenia metodą jest to, że metody mają tę samą nazwę.Ich metody podpisy i mdash;Nazwa metody, liczba parametrów i typy danych parametrów mdash;w przeciwnym razie powinien być wyjątkowy.W ten sposób kompilator może określić, która metoda wykonania.

Konstruktory, metody stosowane do instancji obiektów, są często przeciążone.Odbywa się to w celu zainicjowania obiektu o wartościach bez debalia.Na przykład obiekt pracownika z dwoma dziedzinami (nazwa i data urodzenia lub DOB) może mieć następujące przeciążone konstruktory: pracownik (), pracownika (nazwa) i pracownika (nazwa, DOB).Pierwszy konstruktor tworzy obiekt pracownika o pustej nazwie i polach DOB.Drugi ustawia pole nazwy, ale pozostawia puste pole DOB, a trzecia określa zarówno nazwę, jak i pola DOB.

Metoda przeciążenia najczęściej wykonuje się, aby więcej niż jedna metoda pojawiła się logicznie jako jedna metoda.W przykładzie getarea (), podczas gdy fizycznie istnieją dwie metody, dzwoniący jest prezentowany z jedną, logiczną metodą getarea ().W ten sposób getarea () można rozszerzyć do pracy nad innymi kształtami i mdash;trójkąty, trapezdy i tak dalej;jednocześnie prezentując się logicznie jako jedna metoda.

Metody są również przeciążone, aby zachować kompatybilność wsteczną.Metodę, która wykonuje złożone obliczenia, może otrzymać nowy wymóg opcjonalnie wykonania tych samych obliczeń z niewielką zmianą.Do metody dodaje się nowy parametr, który określi sposób wykonywania obliczeń mDash;stary sposób lub nowy sposób.

Aby uniknąć konieczności znalezienia wszystkich przypadków wywołanych metody i dodania nowego parametru, metodę można przeciążyć.Nowa metoda będzie miała stary podpis i zostanie wywołany przez istniejący kod.Nie będzie zawierał żadnej logiki i po prostu wywoła zmodyfikowaną metodę i przekroczy domyślną „stary sposób” dla nowego parametru.Nowy kod wywoła zmodyfikowaną metodę i przekazuje nowy parametr odpowiednią wartością, starą lub nową drogą.

Przeciążenie metodą jest rodzajem polimorfizmu, w którym ta sama metoda logiczna może być w praktyce stosowana na wiele sposobów.Przeciążenie metody nie jest tym samym, co nadrzędne metody.Zastępowanie metody to miejsce, w którym definicja metody w klasie nadrzędnej jest zmieniana przez klasę dziecka.W takim przypadku obie metody będą miały ten sam podpis.