Sobes.tech
Junior

Când are loc suprascrierea unei metode (overriding)?

sobes.tech AI

Răspuns de la AI

Suprascrierea metodei (overriding) are loc în ierarhia de moștenire atunci când o clasă fiică furnizează propria sa implementare a unei metode care este deja definită în clasa părinte cu același nume, semnătură (potrivire în tip și număr de parametri) și tip de returnare (sau covariant în cazul tipului de obiect returnat).

Caracteristici cheie:

  • Moștenire: Suprascrierea este posibilă doar în contextul moștenirii (clase părinte și fiice).
  • Semnătură: Metoda din clasa fiică trebuie să aibă aceeași semnătură (nume, număr și tipuri de parametri) și același tip de returnare (sau subtipul său covariant) ca metoda din clasa părinte.
  • Accesibilitate: Metoda care este suprascrisă trebuie să fie accesibilă pentru clasa fiică (de obicei public, protected).
  • Polimorfism: Suprascrierea este fundamentul polimorfismului la timpul de execuție, permițând obiectelor clasei fiice să răspundă la apelul metodei în mod propriu, chiar dacă sunt accesate printr-o referință la clasa părinte.

Exemplu (Java):

// Clasa părinte
class Animal {
    // Metodă care va fi suprascrisă
    public void makeSound() {
        System.out.println("Animal face un sunet");
    }
}

// Clasa fiică
class Dog extends Animal {
    // Suprascrierea metodei makeSound()
    @Override // Anotarea @Override este opțională, dar recomandată
    public void makeSound() {
        System.out.println("Câinele latră");
    }
}

Exemplu de utilizare:

// Creăm un obiect Dog
Animal myDog = new Dog();
// Apelăm metoda. Se va apela versiunea suprascrisă din Dog
myDog.makeSound(); // Afișează: Câinele latră

// Creăm un obiect Animal
Animal someAnimal = new Animal();
// Apelăm metoda. Se va apela versiunea din Animal
someAnimal.makeSound(); // Afișează: Animal face un sunet