Junior
Kada įvyksta metodo (overriding) perrašymas?
sobes.tech AI
Atsakymas iš AI
Perrašymas (overriding) vyksta paveldėjimo hierarchijoje, kai vaiko klasė pateikia savo metodų įgyvendinimą, kuris jau yra apibrėžtas tėvų klasėje su tuo pačiu pavadinimu, signatu (parametrų tipo ir kiekio sutapimu) ir grąžinamojo tipo (arba kovarianto atveju grąžinamojo objekto tipo).
Pagrindinės savybės:
- Paveldėjimas: Perrašymas galimas tik paveldėjimo kontekste (tėvų ir vaikų klasės).
- Signatūra: Vaiko klasės metodas turi turėti tą pačią signatūrą (pavadinimą, parametrų kiekį ir tipus) ir grąžinamojo tipo (arba jo kovarianto potipį), kaip ir tėvų klasės metodas.
- Prieinamumas: Perrašomas metodas turi būti prieinamas vaikų klasei (paprastai
public,protected). - Polimorfizmas: Perrašymas yra pagrindas vykdymo laiko polimorfizmui (runtime polymorphism), leidžiantis vaikų klasės objektams reaguoti į metodo iškvietimą savaip, net jei jie yra nurodyti tėvų klasės nuoroda.
Pavyzdys (Java):
// Tėvų klasė
class Animal {
// Metodas, kuris bus perrašytas
public void makeSound() {
System.out.println("Animal makes a sound");
}
}
// Vaikų klasė
class Dog extends Animal {
// Perrašyti makeSound() metodą
@Override // @Override anotacija nėra privaloma, bet rekomenduojama
public void makeSound() {
System.out.println("Dog barks");
}
}
Naudojimo pavyzdys:
// Sukuriame Dog objektą
Animal myDog = new Dog();
// Iškviečiame metodą. Bus iškviesta perrašyta versija iš Dog
myDog.makeSound(); // Rezultatas: Dog barks
// Sukuriame Animal objektą
Animal someAnimal = new Animal();
// Iškviečiame metodą. Bus iškviesta Animal versija
someAnimal.makeSound(); // Rezultatas: Animal makes a sound