Sobes.tech
Junior — Middle

Jaka jest różnica między nadpisywaniem metody a przeciążaniem metody w programowaniu obiektowym?

sobes.tech AI

Odpowiedź od AI

Nadpisanie metody (overriding) to sytuacja, gdy klasa pochodna dostarcza własną implementację metody, która już jest zdefiniowana w klasie bazowej. Pozwala to zmienić zachowanie metody dla obiektów klasy pochodnej.

Przeciążanie metody (overloading) to tworzenie kilku metod o tej samej nazwie, ale różnych parametrach (typach lub ilości). W niektórych językach (np. Java, C++) jest to obsługiwane na poziomie języka, podczas gdy w Pythonie przeciążanie jest realizowane inaczej, np. przez parametry domyślne lub sprawdzanie typów wewnątrz metody.

Przykład nadpisania:

class Animal:
    def sound(self):
        print("Jakiś dźwięk")

class Dog(Animal):
    def sound(self):
        print("Szczekanie")

Przeciążanie w Pythonie zwykle jest imitowane tak:

def add(a, b, c=None):
    if c is not None:
        return a + b + c
    return a + b

W ten sposób nadpisanie zmienia zachowanie odziedziczonej metody, a przeciążanie pozwala, aby ta sama nazwa metody działała z różnymi zestawami parametrów.