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.