Sobes.tech
Junior

Quando ocorre a sobrescrição de um método (overriding) na programação?

sobes.tech IA

Resposta da IA

A redefinição de método ocorre em herança, quando uma classe filha fornece sua própria implementação de um método que já está definido na classe pai. A assinatura do método (nome, tipo de retorno e quantidade/tipos de argumentos) deve coincidir com a do método na classe pai. Isso permite que o polimorfismo funcione: um objeto da classe filha, usado como um objeto da classe pai, chama sua implementação específica do método.

Exemplos de uso:

  • Alterar a lógica do comportamento herdado.
  • Fornecer uma implementação específica da subclasse para uma interface comum.

Pontos-chave:

  • É necessária uma relação é-um (herança).
  • A assinatura do método deve coincidir.
  • O modificador de acesso pode ser o mesmo ou menos restritivo que o do método pai.
  • Não é possível sobrescrever métodos final ou static (na maioria das linguagens).
// Exemplo em Java
class Animal {
    public void makeSound() {
        System.out.println("Som genérico de animal");
    }
}

class Dog extends Animal {
    @Override // Anotação indicando sobrescrita
    public void makeSound() {
        System.out.println("Au au!");
    }
}

// Uso
// Animal myAnimal = new Animal();
// myAnimal.makeSound(); // Saída: Som genérico de animal
//
// Animal myDog = new Dog();
// myDog.makeSound(); // Saída: Au au! (chama o método sobrescrito)
# Exemplo em Python
class Animal:
    def make_sound(self):
        print("Som genérico de animal")

class Dog(Animal):
    def make_sound(self): # Sobrescrita do método
        print("Au au!")

# Uso
# animal = Animal()
# animal.make_sound() # Saída: Som genérico de animal
#
# dog = Dog()
# dog.make_sound() # Saída: Au au!