Junior
Kedy dochádza k prepísaniu metódy (overriding)?
sobes.tech AI
Odpoveď od AI
Prepisovanie metódy (overriding) nastáva v hierarchii dedičnosti, keď podtrieda poskytne vlastnú implementáciu metódy, ktorá je už definovaná v rodičovskej triede s rovnakým názvom, podpisom (zhoda typu a počtu parametrov) a typom návratovej hodnoty (alebo kovariantným v prípade typu objektu).
Kľúčové vlastnosti:
- Dedičstvo: Prepisovanie je možné iba v kontexte dedičstva (rodičovské a podtriedy).
- Podpis: Metóda v podtriede musí mať rovnaký podpis (názov, počet a typy parametrov) a rovnaký typ návratovej hodnoty (alebo jeho kovariantný podtyp) ako metóda v rodičovskej triede.
- Dostupnosť: Metóda, ktorá je prepísaná, musí byť dostupná pre podtriedu (zvyčajne
public,protected). - Polymorfizmus: Prepisovanie je základom polymorfizmu za behu (runtime polymorphism), umožňujúc, aby objekty podtriedy reagovali na volanie metódy vlastným spôsobom, aj keď sú na ne odkazované prostredníctvom referencie na rodičovskú triedu.
Príklad (Java):
// Rodičovská trieda
class Animal {
// Metóda, ktorá bude prepísaná
public void makeSound() {
System.out.println("Zviera vydáva zvuk");
}
}
// Podtrieda
class Dog extends Animal {
// Prepisovanie metódy makeSound()
@Override // Anotácia @Override je voliteľná, ale odporúčaná
public void makeSound() {
System.out.println("Pes šteka");
}
}
Príklad použitia:
// Vytvorenie objektu Dog
Animal myDog = new Dog();
// Volanie metódy. Bude volaná prepísaná verzia z Dog
myDog.makeSound(); // Výstup: Pes šteka
// Vytvorenie objektu Animal
Animal someAnimal = new Animal();
// Volanie metódy. Bude volaná verzia z Animal
someAnimal.makeSound(); // Výstup: Zviera vydáva zvuk