Junior
Când este considerat un metod ca fiind suprascris?
sobes.tech AI
Răspuns de la AI
Metoda este considerată suprascrisă în următoarele cazuri:
- Este declarată într-o clasă derivată.
- Are același nume ca metoda din clasa părinte.
- Are aceeași semnătură (număr și tipuri de parametri) și ordinea parametrilor.
- Are un tip de return compatibil cu cel al metodei din clasa părinte (covarianță, dacă este cazul).
- Are un modificator de acces egal sau mai larg decât cel al metodei din clasa părinte (în majoritatea limbajelor orientate pe obiect).
- Metoda părinte este declarată ca virtuală, abstractă sau de interfață (în limbajele care necesită indicarea explicită a posibilității de suprascriere, de exemplu C# cu cuvântul cheie
virtual).
Exemplu în Java:
// Clasa părinte
class SuperClass {
// Metodă care poate fi suprascrisă
public void display() {
System.out.println("Aceasta este metoda display a SuperClass.");
}
}
// Clasa derivată
class SubClass extends SuperClass {
// Metodă suprascrisă display
@Override // Anotare pentru verificarea suprascrierii la compilare
public void display() {
System.out.println("Aceasta este metoda display a SubClass.");
}
}
Exemplu în Python:
# Clasa părinte
class SuperClass:
# Metodă care poate fi suprascrisă
def display(self):
print("Aceasta este metoda display a SuperClass.")
# Clasa derivată
class SubClass(SuperClass):
# Metodă suprascrisă display
def display(self):
print("Aceasta este metoda display a SubClass.")
Cheia este păstrarea numelui și semnăturii metodei, dar schimbarea comportamentului acesteia în clasa derivată.
Diferența importantă față de overload:
Overloading este declararea mai multor metode cu același nume într-o clasă, dar cu semnături diferite. Overriding este declararea unei metode într-o clasă derivată cu același nume și semnătură ca și în clasa părinte.