Sobes.tech
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ů.