Junior — Middle
Jaký je rozdíl mezi přepsáním metody a přetížením metody v objektově orientovaném programování?
sobes.tech AI
Odpověď od AI
Přepsání metody (overriding) je, když podtřída poskytne vlastní implementaci metody, která je již definována v základní třídě. To umožňuje změnit chování metody pro objekty podtřídy.
Přetížení metody (overloading) je tvorba několika metod se stejným názvem, ale různými parametry (typy nebo počet). V některých jazycích (například Java, C++) je to podporováno na úrovni jazyka, zatímco v Pythonu je přetížení implementováno jinak, například pomocí výchozích parametrů nebo kontrol typů uvnitř metody.
Příklad přepsání:
class Animal:
def sound(self):
print("Nějaký zvuk")
class Dog(Animal):
def sound(self):
print("Štěk")
V Pythonu je přetížení obvykle napodobováno takto:
def add(a, b, c=None):
if c is not None:
return a + b + c
return a + b
Tímto způsobem přepsání mění chování zděděné metody, a přetížení umožňuje, aby stejný název metody fungoval s různými sadami parametrů.