Junior
Millal loetakse meetodit ülekirjutatuks (overriding)?
sobes.tech AI
Vastus AI-lt
Meetod loetakse ülekirjutatuks, kui alamklassis deklareeritakse meetod, mille süntaks on sama (meetodi nimi, parameetrite arv ja tüübid samas järjekorras) kui vanemklassis. Lisaks:
- Vanemklassise meetod ei tohi olla deklareeritud
final-ina (või ekvivalentse modifikaatorina teistes keeltes), mis takistab ülekirjutamist. - Ülekirjutatud meetodi juurdepääsutasand alamklassis ei tohi olla rangem kui vanemklassis.
- Ülekirjutatud meetod võib tagastada sama tüüpi või kovariantiivse tüübi (alam-tüübi algsest tüübist).
- Ülekirjutatud meetod ei tohi visata üldisemaid (või sobimatuid) erandeid kui vanemklassise meetodi puhul.
- Statilised meetodid ei saa olla ülekirjutatud, vaid ainult peidetud (hidden).
Kui kutsutakse ülekirjutatud meetodit vanemklassile viitava viitega, kuid alamklassist objekti kasutades, käivitatakse alamklassi versioon (polümorfism).
// Näide Java keeles
class Parent {
public void display() { // Vanemklassi meetod
System.out.println("Parent display");
}
// final void cannotOverride() { ... } // Seda meetodit ei saa ülekirjutada
}
class Child extends Parent {
@Override // @Override annotatsioon aitab kompilaatoril kontrollida, kas meetod on tõesti ülekirjutatud
public void display() { // Ülekirjutatud meetod - sama signatuur
System.out.println("Child display");
}
}