Junior
Millal peetakse meetodit ülekirjutatuks?
sobes.tech AI
Vastus AI-lt
Meetod loetakse ülekirjutatuks järgmistes olukordades:
- See on määratletud alamklassis.
- Sellel on sama nimi nagu vanemklassi meetodil.
- Sellel on sama signatuur (parameetrite arv ja tüübid) ning parameetrite järjekord.
- Sellel on tagastustüüp, mis on sobiv vanemklassi meetodi tagastustüübiga (kovariantsus, kui see on rakendatav).
- Sellel on sama või laiem juurdepääsuklassifikator kui vanemklassi meetodil (enamikus objektorienteeritud keeltes).
- Vanemklass on määratletud virtuaalse, abstraktse või liidese meetodina (keeltes, kus on vaja selgelt näidata ülekirjutamise võimalust, näiteks C#-s
virtualmärksõnaga).\n\nNäide Java keeles:
// Vanemklass
class SuperClass {
// Meetod, mida saab ülekirjutada
public void display() {
System.out.println("See on SuperClass display meetod.");
}
}
// Alamtüüp
class SubClass extends SuperClass {
// Ülekirjutatud display meetod
@Override // Anotatsioon ülekirjutamise kontrollimiseks kompileerimise ajal
public void display() {
System.out.println("See on SubClass display meetod.");
}
}
Python näide:
# Vanemklass
class SuperClass:
# Meetod, mida saab ülekirjutada
def display(self):
print("See on SuperClass display meetod.")
# Alamtüüp
class SubClass(SuperClass):
# Ülekirjutatud display meetod
def display(self):
print("See on SubClass display meetod.")
Oluline on säilitada meetodi nimi ja signatuur, kuid muuta selle käitumist alamklassis.