Co to jest przeciążenie metody?
Przeciążanie metod jest cechą w większości obiektowych języków programowania, w których dwie lub więcej metod ma tę samą nazwę, ale ma różne parametry. W szczególności liczba, typ danych i / lub kolejność parametrów są różne. Po skompilowaniu kodu, właściwa metoda zostanie automatycznie wybrana na podstawie tego, jak zostanie wywołana. Metody są również znane jako funkcje w niektórych językach programowania, więc przeciążenie metody jest czasami nazywane przeciążeniem funkcji.
Prostym przykładem przeciążenia metody byłaby metoda, która oblicza pole kwadratu. Można go zdefiniować jako getArea (Square s). Ta metoda może być przeciążona, aby dodatkowo obliczyć powierzchnię koła, dodając metodę getArea (koło c).
Podstawowym wymaganiem w przypadku przeciążenia metody jest to, że metody mają tę samą nazwę. Ich podpisy metod - nazwa metody, liczba parametrów i typy danych parametrów - w przeciwnym razie powinny być unikalne. W ten sposób kompilator może określić, którą metodę wykonać.
Konstruktory, metody stosowane do tworzenia instancji obiektów, są często przeciążone. Odbywa się to w celu zainicjowania obiektu o wartościach innych niż domyślne. Na przykład obiekt pracownika z dwoma polami (nazwisko i data urodzenia lub dobro) może mieć następujące przeciążone konstruktory: Pracownik (), Pracownik (imię) i Pracownik (imię, dobro). Pierwszy konstruktor tworzy obiekt pracownika z pustymi polami imienia i nazwiska. Drugi ustawia pole nazwy, ale pozostawia pole dobro puste, a trzeci definiuje zarówno pole imienia, jak i dobro.
Przeciążenie metody jest najczęściej wykonywane, aby więcej niż jedna metoda była logicznie wyświetlana jako jedna metoda. W przykładzie getArea () istnieją fizycznie dwie metody, wywołujący jest prezentowany za pomocą jednej, logicznej metody getArea (). W ten sposób getArea () można rozszerzyć, aby działał na innych kształtach - trójkątach, trapezach i tak dalej - jednocześnie prezentując się logicznie jako pojedyncza metoda.
Metody są również przeciążone, aby zachować kompatybilność wsteczną. Metoda, która wykonuje złożone obliczenia, może otrzymać nowy wymóg opcjonalnego wykonania tego samego obliczenia z niewielką zmianą. Do metody dodawany jest nowy parametr, który określi sposób wykonania obliczeń - stary lub nowy sposób.
Aby uniknąć konieczności znalezienia wszystkich przypadków, w których metoda jest wywoływana, i dodania nowego parametru, metoda może zostać przeciążona. Nowa metoda będzie miała starą sygnaturę i będzie wywoływana przez istniejący kod. Nie będzie zawierał żadnej logiki i po prostu wywoła zmodyfikowaną metodę i przekaże domyślnie „stary sposób” dla nowego parametru. Nowy kod wywoła zmodyfikowaną metodę i przekaże nowy parametr o odpowiedniej wartości, starej lub nowej.
Przeciążenie metody 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 zastąpienie metody. Przesłanianie metod polega na tym, że definicja metody w klasie nadrzędnej jest zmieniana przez klasę podrzędną. W takim przypadku obie metody będą miały ten sam podpis.