Junior
Când are loc suprascrierea unei metode (overriding) în programare?
sobes.tech AI
Răspuns de la AI
Suprascrierea metodei are loc în moștenire, atunci când o clasă derivată oferă propria sa implementare a unei metode care este deja definită în clasa părinte. Semnătura metodei (numele, tipul de returnare și numărul/tipurile argumentelor) trebuie să coincidă cu cea a metodei din clasa părinte. Acest lucru permite funcționarea polimorfismului: un obiect al clasei derivate, utilizat ca obiect al clasei părinte, apelează propria sa implementare specifică a metodei.
Exemple de utilizare:
- Modificarea logicii comportamentului moștenit.
- Oferirea unei implementări specifice pentru subclasă a unei interfețe comune.
Puncte cheie:
- Este necesară o relație este-un (moștenire).
- Semnătura metodei trebuie să coincidă.
- Modificatorul de acces poate fi același sau mai puțin restrictiv decât cel al metodei părinte.
- Nu se pot suprascrie metodele
finalsaustatic(în majoritatea limbajelor).
// Exemplu în Java
class Animal {
public void makeSound() {
System.out.println("Sunet generic de animal");
}
}
class Dog extends Animal {
@Override // Anotare indicând suprascrierea
public void makeSound() {
System.out.println("Ham!");
}
}
// Utilizare
// Animal myAnimal = new Animal();
// myAnimal.makeSound(); // Ieșire: Sunet generic de animal
//
// Animal myDog = new Dog();
// myDog.makeSound(); // Ieșire: Ham! (metoda suprascrisă este apelată)
# Exemplu în Python
class Animal:
def make_sound(self):
print("Sunet generic de animal")
class Dog(Animal):
def make_sound(self): # Suprascrierea metodei
print("Ham!")
# Utilizare
# animal = Animal()
# animal.make_sound() # Ieșire: Sunet generic de animal
#
# dog = Dog()
# dog.make_sound() # Ieșire: Ham!