Sobes.tech
Junior

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

sobes.tech AI

Răspuns de la AI

Suprascrierea metodei are loc în moștenire, atunci când o clasă derivată oferă propria sa implementare a unei metode care este deja definită în clasa părinte. Semnătura metodei (numele, tipul de returnare și numărul/tipurile argumentelor) trebuie să coincidă cu cea a metodei din clasa părinte. Acest lucru permite funcționarea polimorfismului: un obiect al clasei derivate, utilizat ca obiect al clasei părinte, apelează propria sa implementare specifică a metodei.

Exemple de utilizare:

  • Modificarea logicii comportamentului moștenit.
  • Oferirea unei implementări specifice pentru subclasă a unei interfețe comune.

Puncte cheie:

  • Este necesară o relație este-un (moștenire).
  • Semnătura metodei trebuie să coincidă.
  • Modificatorul de acces poate fi același sau mai puțin restrictiv decât cel al metodei părinte.
  • Nu se pot suprascrie metodele final sau static (în majoritatea limbajelor).
// Exemplu în Java
class Animal {
    public void makeSound() {
        System.out.println("Sunet generic de animal");
    }
}

class Dog extends Animal {
    @Override // Anotare indicând suprascrierea
    public void makeSound() {
        System.out.println("Ham!");
    }
}

// Utilizare
// Animal myAnimal = new Animal();
// myAnimal.makeSound(); // Ieșire: Sunet generic de animal
//
// Animal myDog = new Dog();
// myDog.makeSound(); // Ieșire: Ham! (metoda suprascrisă este apelată)
# Exemplu în Python
class Animal:
    def make_sound(self):
        print("Sunet generic de animal")

class Dog(Animal):
    def make_sound(self): # Suprascrierea metodei
        print("Ham!")

# Utilizare
# animal = Animal()
# animal.make_sound() # Ieșire: Sunet generic de animal
#
# dog = Dog()
# dog.make_sound() # Ieșire: Ham!