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ť
finalalebostaticmetó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!