Junior
Kedy sa metóda považuje za prepísanú?
sobes.tech AI
Odpoveď od AI
Metóda sa považuje za prepísanú v nasledujúcich prípadoch:
- Je deklarovaná v odvodenom triede.
- Má rovnaké meno ako metóda v rodičovskej triede.
- Má rovnakú signatúru (počet a typy parametrov) a poradie parametrov.
- Má typ návratovej hodnoty kompatibilný s typom návratovej hodnoty metódy v rodičovskej triede (kovariancia, ak je to relevantné).
- Má rovnaký alebo širší prístupový modifikátor ako metóda v rodičovskej triede (v väčšine objektovo orientovaných jazykov).
- Rodičovská metóda je deklarovaná ako virtuálna, abstraktná alebo rozhranie (v jazykoch, ktoré vyžadujú explicitné označenie možnosti prepísania, napríklad C# s kľúčovým slovom
virtual).
Príklad v Jave:
// Rodičovská trieda
class SuperClass {
// Metóda, ktorú možno prepísať
public void display() {
System.out.println("Toto je display metóda triedy SuperClass.");
}
}
// Odvodená trieda
class SubClass extends SuperClass {
// Prepísaná display metóda
@Override // Anotácia na kontrolu prepísania počas kompilácie
public void display() {
System.out.println("Toto je display metóda triedy SubClass.");
}
}
Príklad v Pythone:
# Rodičovská trieda
class SuperClass:
# Metóda, ktorú možno prepísať
def display(self):
print("Toto je display metóda triedy SuperClass.")
# Odvodená trieda
class SubClass(SuperClass):
# Prepísaná display metóda
def display(self):
print("Toto je display metóda triedy SubClass.")
Kľúčom je zachovať názov a signatúru metódy, ale zmeniť jej správanie v odvodenom triede.
Dôležitý rozdiel od overloading:
Overloading je deklarácia viacerých metód s rovnakým názvom v jednej triede, ale s rôznymi signatúrami. Overriding je deklarácia metódy v odvodenom triede s rovnakým názvom a signatúrou ako v rodičovskej triede.