Junior
Quando um método é considerado sobrescrito (overriding)?
sobes.tech IA
Resposta da IA
Um método é considerado sobrescrito quando numa classe filha é declarado um método com a mesma assinatura (nome do método, número e tipos de parâmetros na mesma ordem) que na classe pai. Além disso:
- O método na classe pai não deve estar declarado como
final(ou um modificador equivalente em outras linguagens), que impede a sobrescrição. - O nível de acesso do método sobrescrito na classe filha não pode ser mais restritivo do que na classe pai.
- O método sobrescrito pode devolver o mesmo tipo que o método na classe pai, ou um tipo covariante (subtipo do tipo original).
- O método sobrescrito não pode lançar exceções que sejam mais gerais (ou incompatíveis) do que as exceções declaradas no método da classe pai.
- Métodos estáticos não podem ser sobrescritos, apenas ocultados (hidden).
Ao chamar o método sobrescrito através de uma referência à classe pai, mas com um objeto da classe filha, é a versão do método da classe filha que é executada (polimorfismo).
// Exemplo em Java
class Parent {
public void display() { // Método na classe pai
System.out.println("Parent display");
}
// final void cannotOverride() { ... } // Este método não pode ser sobrescrito
}
class Child extends Parent {
@Override // Anotação @Override ajuda o compilador a verificar se o método realmente está sendo sobrescrito
public void display() { // Método sobrescrito com a mesma assinatura
System.out.println("Child display");
}
}