Sobes.tech
Junior — Middle

Jak rozlišit přetížení metody od jejího přepsání v objektově orientovaném programování?

sobes.tech AI

Odpověď od AI

Přetížení metody (overloading) a přepsání metody (overriding) jsou odlišné koncepty v objektově orientovaném programování:

  • Přetížení metody: v jedné třídě je několik metod se stejným názvem, ale s různými parametry (typem, počtem). To umožňuje volat metodu s různými argumenty.

  • Přepsání metody: když podtřída poskytne vlastní implementaci metody, která je již definována v základní třídě se stejnou signaturou (jméno a parametry). To umožňuje změnit chování metody pro podtřídu.

Příklad v Java:

class Animal {
    void sound() {
        System.out.println("Nějaký zvuk");
    }

    void sound(String mood) { // přetížení
        System.out.println("Zvuk když " + mood);
    }
}

class Dog extends Animal {
    @Override
    void sound() { // přepsání
        System.out.println("Štěkání");
    }
}

Zde sound() v třídě Dog přepisuje metodu základní třídy, a sound(String mood) je přetížení metody ve stejné třídě Animal.