Junior
Kad metode tiek uzskatīta par pārrakstītu (overriding)?
sobes.tech AI
Atbilde no AI
Metode uzskata par pārdefinētu, ja apakšklasē tiek deklarēta metode ar tādu pašu signatūru (metodes nosaukums, parametru skaits un tipi tajā pašā secībā), kā vecākklasē. Turklāt:
- Vecākklases metodam nedrīkst būt deklarēts kā
final(vai ekvivalents modifikators citās valodās), kas aizliedz pārdefināšanu. - Pārdefinētās metodes piekļuves līmenis apakšklasē nedrīkst būt stingrāks nekā vecākklasē.
- Pārdefinētā metode var atgriezt to pašu tipu kā vecākklases metode vai kovariantu tipu (apakštipu oriģinālajam tipam).
- Pārdefinētā metode nedrīkst izraisīt plašākas (vai nesaderīgas) izņēmumu klases nekā vecākklases metode.
- Statiskās metodes nevar tikt pārdefinētas, tās var tikai paslēpt (hidden).
Kad pārdefinētā metode tiek izsaukta caur atsauci uz vecākklasi, bet ar apakšklases objektu, tiek izpildīta apakšklases versija (polimorfisms).
// Piemērs Java
class Parent {
public void display() { // Vecākklases metode
System.out.println("Parent display");
}
// final void cannotOverride() { ... } // Šo metodi nevar pārdefinēt
}
class Child extends Parent {
@Override // @Override anotācija palīdz kompilatoram pārbaudīt, vai metode patiešām ir pārdefinēta
public void display() { // Pārdefinētā metode - tā pati signatūra
System.out.println("Child display");
}
}