Sobes.tech
Junior

Când este considerat un metod ca fiind suprascris (overriding)?

sobes.tech AI

Răspuns de la AI

Metoda este considerată suprascrisă (overriding) în programarea orientată pe obiecte atunci când:

  1. Este definită într-o subclasă cu același nume, tip de returnare și listă de parametri (semnătură) ca metoda din superclasă.
  2. Metoda din superclasă nu este private.
  3. Metoda din subclasă nu are un modificator de acces mai restrictiv decât metoda din superclasă.
  4. În cazul excepțiilor, metoda suprascrisă nu poate declara excepții verificate ([checked exceptions]) care sunt mai generale decât cele declarate în metoda suprascrisă.

La apelarea metodei suprascrise pe un obiect de tipul subclasei, se execută versiunea metodei din subclasă. Acesta este un exemplu de polimorfism în timpul execuției.

Exemplu în Java:

// java

class Animal {
    public void makeSound() {
        System.out.println("Sunet generic de animal");
    }
}

class Dog extends Animal {
    @Override // Anotarea @Override confirmă că metoda a fost suprascrisă
    public void makeSound() {
        System.out.println("Ham ham");
    }
}

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