Sobes.tech
Junior

Kedy dochádza k prepísaniu metódy (overriding) v programovaní?

sobes.tech AI

Odpoveď od AI

Prepísanie metódy nastáva v dedičstve, keď odvodená trieda poskytne vlastnú implementáciu metódy, ktorá je už definovaná v rodičovskej triede. Signatúra metódy (názov, typ návratu a počet/tipy argumentov) musí zodpovedať metóde v rodičovskej triede. To umožňuje fungovanie polymorfizmu: objekt odvodenej triedy, použitý ako objekt rodičovskej triedy, volá svoju špecifickú implementáciu metódy.

Príklady použitia:

  • Zmena logiky zdedeného správania.
  • Poskytnutie špecifickej implementácie pre spoločné rozhranie v odvodenej triede.

Kľúčové body:

  • Vyžaduje sa vzťah je-ako (dedičstvo).
  • Signatúra metódy musí zodpovedať.
  • Modifikátor prístupu môže byť rovnaký alebo menej prísny ako u rodičovskej metódy.
  • Nie je možné prepísať final alebo static metódy (v väčšine jazykov).
// Príklad v Jave
class Animal {
    public void makeSound() {
        System.out.println("Všeobecný zvuk zvieraťa");
    }
}

class Dog extends Animal {
    @Override // Anotácia označuje prepísanie
    public void makeSound() {
        System.out.println("Haf!");
    }
}

// Použitie
// Animal myAnimal = new Animal();
// myAnimal.makeSound(); // Výstup: Všeobecný zvuk zvieraťa
//
// Animal myDog = new Dog();
// myDog.makeSound(); // Výstup: Haf! (prepísaná metóda)
# Príklad v Pythone
class Animal:
    def make_sound(self):
        print("Všeobecný zvuk zvieraťa")

class Dog(Animal):
    def make_sound(self): # Prepísanie metódy
        print("Haf!")

# Použitie
# animal = Animal()
# animal.make_sound() # Výstup: Všeobecný zvuk zvieraťa
#
# dog = Dog()
# dog.make_sound() # Výstup: Haf!