Sobes.tech
Junior

Quando um método é considerado sobrescrito?

sobes.tech IA

Resposta da IA

O método é considerado como sobrescrito nos seguintes casos:

  1. Está declarado numa classe filha.
  2. Tem o mesmo nome que o método na classe pai.
  3. Tem a mesma assinatura (número e tipos de parâmetros) e ordem de parâmetros.
  4. Tem um tipo de retorno compatível com o tipo de retorno do método na classe pai (covariância, se aplicável).
  5. Tem um modificador de acesso igual ou mais amplo do que o método na classe pai (na maioria das linguagens orientadas a objetos).
  6. O método pai está declarado como virtual, abstrato ou de interface (em linguagens que requerem indicar explicitamente a capacidade de sobrescrever, por exemplo, C# com a palavra-chave virtual).

Exemplo em Java:

// Classe pai
class SuperClass {
    // Método que pode ser sobrescrito
    public void display() {
        System.out.println("Este é o método display de SuperClass.");
    }
}

// Classe filha
class SubClass extends SuperClass {
    // Método sobrescrito display
    @Override // Anotação para verificar a sobrescrita na compilação
    public void display() {
        System.out.println("Este é o método display de SubClass.");
    }
}

Exemplo em Python:

# Classe pai
class SuperClass:
    # Método que pode ser sobrescrito
    def display(self):
        print("Este é o método display de SuperClass.")

# Classe filha
class SubClass(SuperClass):
    # Método sobrescrito display
    def display(self):
        print("Este é o método display de SubClass.")

O ponto-chave é manter o nome e a assinatura do método, mas alterar seu comportamento na classe filha.

Diferença importante com sobrecarga (overloading): sobrecarga é a declaração de vários métodos com o mesmo nome numa classe, mas com assinaturas diferentes. Sobrescrita (overriding) é a declaração de um método numa classe filha com o mesmo nome e assinatura que na classe pai.