Sobes.tech
Junior

Kdy dochází k přepsání metody (overriding) v programování?

sobes.tech AI

Odpověď od AI

Přepsání metody nastává v dědičnosti, když odvozená třída poskytne vlastní implementaci metody, která je již definována v rodičovské třídě. Signatura metody (název, typ návratové hodnoty a počet/tipy argumentů) musí odpovídat metodě v rodičovské třídě. To umožňuje fungování polymorfismu: objekt odvozené třídy, použitý jako objekt rodičovské třídy, volá svou specifickou implementaci metody.

Příklady použití:

  • Změna logiky zděděného chování.
  • Poskytnutí specifické implementace pro společné rozhraní v odvozené třídě.

Klíčové body:

  • Vyžaduje se vztah je-ano (dědičnost).
  • Signatura metody musí odpovídat.
  • Přístupový modifikátor může být stejný nebo méně přísný než u rodičovské metody.
  • Nelze přepsat final nebo static metody (ve většině jazyků).
// Příklad v Javě
class Animal {
    public void makeSound() {
        System.out.println("Obecný zvuk zvířete");
    }
}

class Dog extends Animal {
    @Override // Anotace označuje přepsání
    public void makeSound() {
        System.out.println("Haf!");
    }
}

// Použití
// Animal myAnimal = new Animal();
// myAnimal.makeSound(); // Výstup: Obecný zvuk zvířete
//
// Animal myDog = new Dog();
// myDog.makeSound(); // Výstup: Haf! (přepsaná metoda)
# Příklad v Pythonu
class Animal:
    def make_sound(self):
        print("Obecný zvuk zvířete")

class Dog(Animal):
    def make_sound(self): # Přepsání metody
        print("Haf!")

# Použití
# animal = Animal()
# animal.make_sound() # Výstup: Obecný zvuk zvířete
#
# dog = Dog()
# dog.make_sound() # Výstup: Haf!