Sobes.tech
Junior

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

sobes.tech IA

Resposta da IA

A redefinição de método (overriding) ocorre na hierarquia de herança quando uma classe filha fornece sua própria implementação de um método que já está definido na classe pai com o mesmo nome, assinatura (coincidência no tipo e quantidade de parâmetros) e tipo de retorno (ou covariante no caso do tipo de objeto de retorno).

Características principais:

  • Herança: A redefinição só é possível no contexto de herança (classes pai e filho).
  • Assinatura: O método na classe filha deve ter a mesma assinatura (nome, quantidade e tipos de parâmetros) e tipo de retorno (ou seu subtipo covariante) que o método na classe pai.
  • Acessibilidade: O método que está sendo redefinido deve ser acessível para a classe filha (geralmente public, protected).
  • Polimorfismo: A redefinição é a base do polimorfismo em tempo de execução, permitindo que objetos da classe filha respondam à chamada do método de forma própria, mesmo que acessados por uma referência à classe pai.

Exemplo (Java):

// Classe pai
class Animal {
    // Método que será redefinido
    public void makeSound() {
        System.out.println("Animal faz um som");
    }
}

// Classe filha
class Dog extends Animal {
    // Redefinição do método makeSound()
    @Override // A anotação @Override é opcional, mas recomendada
    public void makeSound() {
        System.out.println("Cachorro late");
    }
}

Exemplo de uso:

// Criar um objeto Dog
Animal myDog = new Dog();
// Chamar o método. Será chamada a versão redefinida em Dog
myDog.makeSound(); // Saída: Cachorro late

// Criar um objeto Animal
Animal someAnimal = new Animal();
// Chamar o método. Será chamada a versão de Animal
someAnimal.makeSound(); // Saída: Animal faz um som