Sobes.tech
Junior

Quando um método é considerado sobrescrito (overriding)?

sobes.tech IA

Resposta da IA

O método é considerado sobreposto (overriding) na programação orientada a objetos quando:

  1. É definido numa subclasse com o mesmo nome, tipo de retorno e lista de parâmetros (assinatura) que o método na superclasse.
  2. O método da superclasse não é private.
  3. O método na subclasse não tem um modificador de acesso mais restritivo do que o método na superclasse.
  4. Em caso de exceções, o método sobreposto não pode declarar exceções verificadas ([checked exceptions]) que sejam mais gerais do que as declaradas no método original.

Ao chamar o método sobreposto num objeto da subclasse, é a versão do método da subclasse que é executada. Isto é um exemplo de polimorfismo em tempo de execução.

Exemplo em Java:

// java

class Animal {
    public void makeSound() {
        System.out.println("Som genérico de animal");
    }
}

class Dog extends Animal {
    @Override // A anotação @Override confirma que o método foi sobreposto
    public void makeSound() {
        System.out.println("Au au");
    }
}

class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Miau");
    }
}