Sobes.tech
Junior

Millal loetakse meetodit üle kirjutatuks (overriding)?

sobes.tech AI

Vastus AI-lt

Objektipõhises programmeerimises loetakse meetod üle kirjutatuks (overriding), kui:

  1. See on määratletud alamklassis sama nime, tagastustüübi ja parameetrite loendiga (allkirjaga) nagu superklassi meetod.
  2. Superklassi meetod ei ole private.
  3. Alamklassi meetodil ei ole rangemat juurdepääsukorraldust kui superklassi meetod.
  4. Juhtudel, kui on erandid, ei või üle kirjutatud meetod deklareerida kontrollitavaid erandeid ([checked exceptions]), mis on üldisemad kui deklareeritud erandid üle kirjutatud meetodis.

Kui kutsutakse üle kirjutatud meetodit alamklassi objektil, täidetakse alamklassi meetodi versioon. See on näide polümorfismist jooksuaeg.

Näide Java-s:

// java

class Animal {
    public void makeSound() {
        System.out.println("Üldine looma hääl");
    }
}

class Dog extends Animal {
    @Override // @Override annotatsioon kinnitab, et meetod on üle kirjutatud
    public void makeSound() {
        System.out.println("Haug haug");
    }
}

class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Miau");
    }
}