Sobes.tech
Junior

Quando avviene la sovrascrittura di un metodo (overriding) in programmazione?

sobes.tech AI

Risposta dell'AI

La sovrascrittura del metodo avviene in ereditarietà, quando una classe figlia fornisce la propria implementazione di un metodo già definito nella classe genitore. La firma del metodo (nome, tipo di ritorno e numero/tipi di argomenti) deve corrispondere a quella del metodo nella classe genitore. Questo permette al polimorfismo di funzionare: un oggetto della classe figlia, usato come oggetto della classe genitore, chiama la sua implementazione specifica del metodo.

Esempi di utilizzo:

  • Modifica della logica del comportamento ereditato.
  • Fornire un'implementazione specifica della sottoclasse per un'interfaccia comune.

Punti chiave:

  • È richiesta una relazione è-un (ereditarietà).
  • La firma del metodo deve corrispondere.
  • Il modificatore di accesso può essere lo stesso o meno restrittivo di quello del metodo genitore.
  • Non è possibile sovrascrivere metodi final o static (nella maggior parte dei linguaggi).
// Esempio in Java
class Animal {
    public void makeSound() {
        System.out.println("Suono generico dell'animale");
    }
}

class Dog extends Animal {
    @Override // Annotazione che indica sovrascrittura
    public void makeSound() {
        System.out.println("Bau!");
    }
}

// Utilizzo
// Animal myAnimal = new Animal();
// myAnimal.makeSound(); // Output: Suono generico dell'animale
//
// Animal myDog = new Dog();
// myDog.makeSound(); // Output: Bau! (metodo sovrascritto)
# Esempio in Python
class Animal:
    def make_sound(self):
        print("Suono generico dell'animale")

class Dog(Animal):
    def make_sound(self): # Sovrascrittura del metodo
        print("Bau!")

# Utilizzo
# animal = Animal()
# animal.make_sound() # Output: Suono generico dell'animale
#
# dog = Dog()
# dog.make_sound() # Output: Bau!