Junior
Millal toimub meetodi (overriding) ülekirjutamine?
sobes.tech AI
Vastus AI-lt
Meetodite ülekirjutamine (overriding) toimub pärilushierarhias, kui alampereklass pakub oma meetodi rakendust, mis on juba määratletud vanemklassis sama nime, signatuuri (parameetrite tüübi ja arvu vastavus) ning tagastustüübi (või kovariantse tagastustüübi) osas.
Peamised omadused:
- Pärimine: Ülekirjutamine on võimalik ainult päriluse kontekstis (vanem- ja alampereklassid).
- Signatuur: Alampereklassi meetod peab omama sama signatuuri (nime, parameetrite arvu ja tüüpe) ning tagastustüüpi (või selle kovariantset tüüpi) nagu vanemklass.
- Juurdepääs: Ülekirjutatav meetod peab olema vanemklassile juurdepääsetav (tavaliselt
public,protected). - Polümorfism: Ülekirjutamine on aluseks jooksutamise ajal toimivale polümorfismile (runtime polymorphism), võimaldades alampereklassi objekte reageerida meetodi väljakutsele oma moodi, isegi kui neid kasutatakse vanemklassi viitega.
Näide (Java):
// Vanemklass
class Animal {
// Meetod, mida ülekirjutatakse
public void makeSound() {
System.out.println("Animal makes a sound");
}
}
// Alampereklass
class Dog extends Animal {
// makeSound() meetodi ülekirjutamine
@Override // @Override annotatsioon ei ole kohustuslik, kuid soovitatav
public void makeSound() {
System.out.println("Dog barks");
}
}
Näide kasutamisest:
// Loome Dog objekti
Animal myDog = new Dog();
// Kutsume meetodit. Kutsutakse ülekirjutatud versioon Dog-st
myDog.makeSound(); // Tulemuseks: Dog barks
// Loome Animal objekti
Animal someAnimal = new Animal();
// Kutsume meetodit. Kutsutakse Animal versioon
someAnimal.makeSound(); // Tulemuseks: Animal makes a sound