Sobes.tech
Junior

Millal peetakse meetodit ülekirjutatuks?

sobes.tech AI

Vastus AI-lt

Meetod loetakse ülekirjutatuks järgmistes olukordades:

  1. See on määratletud alamklassis.
  2. Sellel on sama nimi nagu vanemklassi meetodil.
  3. Sellel on sama signatuur (parameetrite arv ja tüübid) ning parameetrite järjekord.
  4. Sellel on tagastustüüp, mis on sobiv vanemklassi meetodi tagastustüübiga (kovariantsus, kui see on rakendatav).
  5. Sellel on sama või laiem juurdepääsuklassifikator kui vanemklassi meetodil (enamikus objektorienteeritud keeltes).
  6. Vanemklass on määratletud virtuaalse, abstraktse või liidese meetodina (keeltes, kus on vaja selgelt näidata ülekirjutamise võimalust, näiteks C#-s virtual märksõnaga).\n\nNäide Java keeles:
// Vanemklass
class SuperClass {
    // Meetod, mida saab ülekirjutada
    public void display() {
        System.out.println("See on SuperClass display meetod.");
    }
}

// Alamtüüp
class SubClass extends SuperClass {
    // Ülekirjutatud display meetod
    @Override // Anotatsioon ülekirjutamise kontrollimiseks kompileerimise ajal
    public void display() {
        System.out.println("See on SubClass display meetod.");
    }
}

Python näide:

# Vanemklass
class SuperClass:
    # Meetod, mida saab ülekirjutada
    def display(self):
        print("See on SuperClass display meetod.")

# Alamtüüp
class SubClass(SuperClass):
    # Ülekirjutatud display meetod
    def display(self):
        print("See on SubClass display meetod.")

Oluline on säilitada meetodi nimi ja signatuur, kuid muuta selle käitumist alamklassis.