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
finalnebostaticmetody (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!