Sobes.tech
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:

  1. Vecākklases metodam nedrīkst būt deklarēts kā final (vai ekvivalents modifikators citās valodās), kas aizliedz pārdefināšanu.
  2. Pārdefinētās metodes piekļuves līmenis apakšklasē nedrīkst būt stingrāks nekā vecākklasē.
  3. Pārdefinētā metode var atgriezt to pašu tipu kā vecākklases metode vai kovariantu tipu (apakštipu oriģinālajam tipam).
  4. Pārdefinētā metode nedrīkst izraisīt plašākas (vai nesaderīgas) izņēmumu klases nekā vecākklases metode.
  5. 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");
    }
}