Junior
Când este considerat un metod ca fiind suprascris (overriding)?
sobes.tech AI
Răspuns de la AI
Metoda este considerată suprascrisă (overriding) în programarea orientată pe obiecte atunci când:
- Este definită într-o subclasă cu același nume, tip de returnare și listă de parametri (semnătură) ca metoda din superclasă.
- Metoda din superclasă nu este
private. - Metoda din subclasă nu are un modificator de acces mai restrictiv decât metoda din superclasă.
- În cazul excepțiilor, metoda suprascrisă nu poate declara excepții verificate ([checked exceptions]) care sunt mai generale decât cele declarate în metoda suprascrisă.
La apelarea metodei suprascrise pe un obiect de tipul subclasei, se execută versiunea metodei din subclasă. Acesta este un exemplu de polimorfism în timpul execuției.
Exemplu în Java:
// java
class Animal {
public void makeSound() {
System.out.println("Sunet generic de animal");
}
}
class Dog extends Animal {
@Override // Anotarea @Override confirmă că metoda a fost suprascrisă
public void makeSound() {
System.out.println("Ham ham");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Miau");
}
}