Junior
Kdy dochází k přepsání metody (overriding)?
sobes.tech AI
Odpověď od AI
Přepsání metody (overriding) nastává v hierarchii dědičnosti, když podtřída poskytne vlastní implementaci metody, která již byla definována v nadtřídě se stejným názvem, signaturou (shodou typu a počtu parametrů) a typem návratové hodnoty (nebo kovariantním v případě návratového typu objektu).
Klíčové vlastnosti:
- Dědičnost: Přepsání je možné pouze v kontextu dědičnosti (rodičovské a odvozené třídy).
- Signatura: Metoda v odvozené třídě musí mít stejnou signaturu (název, počet a typy parametrů) a typ návratové hodnoty (nebo jeho kovariantní podtyp) jako metoda v rodičovské třídě.
- Dostupnost: Metoda, která je přepsána, musí být dostupná pro odvozenou třídu (obvykle
public,protected). - Polymorfismus: Přepsání je základem polymorfismu za běhu (runtime polymorphism), umožňující objektům odvozené třídy reagovat na volání metody svým vlastním způsobem, i když jsou na ně odkazovány přes referenci na rodičovskou třídu.
Příklad (Java):
// Rodičovská třída
class Animal {
// Metoda, která bude přepsána
public void makeSound() {
System.out.println("Zvíře vydává zvuk");
}
}
// Odvozená třída
class Dog extends Animal {
// Přepsání metody makeSound()
@Override // Anotace @Override je volitelná, ale doporučená
public void makeSound() {
System.out.println("Pes štěká");
}
}
Příklad použití:
// Vytvoření objektu Dog
Animal myDog = new Dog();
// Volání metody. Bude volána přepsaná verze z Dog
myDog.makeSound(); // Výstup: Pes štěká
// Vytvoření objektu Animal
Animal someAnimal = new Animal();
// Volání metody. Bude volána verze z Animal
someAnimal.makeSound(); // Výstup: Zvíře vydává zvuk