Junior
Kad notiek metodes (overriding) pārrakstīšana?
sobes.tech AI
Atbilde no AI
Pārrakstīšana (overriding) notiek mantošanas hierarhijā, kad apakšklase nodrošina savu metodes realizāciju, kas jau ir definēta vecākklasē ar to pašu nosaukumu, signatūru (parametru tipu un skaita sakritību) un atgriešanas tipu (vai kovariantu gadījumā atgriešanas objekta tipu).
Galvenās īpašības:
- Mantošana: Pārrakstīšana ir iespējama tikai mantošanas kontekstā (vecāku un apakšklases).
- Signatūra: Apakšklases metodei jābūt ar to pašu signatūru (nosaukumu, parametru skaitu un tipiem) un atgriešanas tipu (vai tā kovariantu tipu), kā vecāku klases metodē.
- Pieejamība: Pārrakstītais metodei jābūt pieejamam apakšklasei (parasti
public,protected). - Polimorfisms: Pārrakstīšana ir pamats izpildes laikā notiekošajam polimorfismam (runtime polymorphism), ļaujot apakšklases objektiem reaģēt uz metodes izsaukumu savai vajadzībai, pat ja tie ir norādīti uz vecāku klases atsauces.
Piemērs (Java):
// Vecāku klase
class Animal {
// Metode, kas tiks pārrakstīta
public void makeSound() {
System.out.println("Animal makes a sound");
}
}
// Apakšklase
class Dog extends Animal {
// Pārrakstīt makeSound() metodi
@Override // @Override anotācija nav obligāta, bet ieteicama
public void makeSound() {
System.out.println("Dog barks");
}
}
Piemērs izmantošanai:
// Izveidojam Dog objektu
Animal myDog = new Dog();
// Izsaucam metodi. Tiks izsaukta pārrakstītā versija no Dog
myDog.makeSound(); // Rezultāts: Dog barks
// Izveidojam Animal objektu
Animal someAnimal = new Animal();
// Izsaucam metodi. Tiks izsaukta versija no Animal
someAnimal.makeSound(); // Rezultāts: Animal makes a sound