Przeciążanie metod w Pythonie

Przeciążanie w Pythonie, jest kolejnym ważnym zagadnieniem, które trzeba zrozumieć by móc korzystać z dobrodziejstw programowania obiektowego.

Czym jest przeciążanie?

Dzięki przeciążaniu, możemy utworzyć w klasie dziedziczącej (klasie Dziecka), metody o takiej samej nazwie, jak metoda w klasie dziedzica (klasie Rodzica). Efektem tego będzie nadpisanie w klasie Dziecka, metody istniejącej o takiej samej nazwie, w klasie Rodzica. Czyli, użycie zmiennych i funkcji zawartych w klasie Dziecka (Dziedziczącej).

Celem lepszego zrozumienia, napiszmy przykład odwołujący się do jakiejś osoby. Tworzymy klasę „Osoba” i w tej klasie deklarujemy zmienne, charakteryzujące ją, w zakresie: Imię, Nazwisko, Kolor oczu, Wzrost. Dane tych zmiennych wyświetlamy w metodzie:

Zakładamy, że ta osoba zmieni swoją tożsamość w zakresie: Imię i Nazwisko. Zatem tworzymy kolejną klasę „OsobaPoZmianie”, gdzie stworzymy identyczną metodę jak w klasie „Osoba”:

Ta nowa metoda nadpisze poprzednią, jednocześnie zmieniając tożsamość zapisaną w zmiennych: Imię i Nazwisko klasy „OsobaPoZmianie”. Tak naprawdę, nadpisze wszystkie cztery zmienne, ale dwie mają przypisane takie same wartości jak w metodzie „Rodzica”. Pomijam w tym wywodzie resztę kodu, bo o tym wcześniej już pisałem, skupiam się tylko, na tym konkretnym zagadnieniu.

Na koniec wyświetlam obie metody „daneOsoby()” obu klas.

Najpierw klasy „Osoba”, gdzie metoda „daneOsoby()”, która zwraca zmienne klasy „Osoba”. Potem klasy „OsobaPoZmianie”, która zwraca zmienne klasy „OsobaPoZmianie”, mimo, że dziedziczy po klasie „Osoba” i posiada metodę o takiej samej nazwie, jak klasa „Osoba”.

Dziedziczenie jest zapisane w parametrze, w linijce tworzenie klasy, w nawiasach.

Poniżej działanie na przykładzie:

Także w ten sposób, możemy zmienić jakąś metodę, korzystając z dobrodziejstw dziedziczenia, jednocześnie nie modyfikując metody, po której dziedziczymy. Po co nam to przydatne? Powiedzmy, że klasa, z której dziedziczymy, posiada szereg metod opisujących budowę człowieka. I chcemy stworzyć wiele kopii takiego człowieka, ale modyfikując tylko określone parametry tego człowieka. Przykładowo tylko kolor i działanie oczu (metoda opisująca kolor i działanie oczu), jednocześnie nie wpływając na wzorzec podstawowy zawierający metodę opisującą kolor i działanie oczu (metodę), która może być pusta i nic nie określać, to w takim przypadku możemy skorzystać z przeciążania metod.