Junior
Quando um método é considerado sobrescrito?
sobes.tech IA
Resposta da IA
O método é considerado como sobrescrito nos seguintes casos:
- Está declarado numa classe filha.
- Tem o mesmo nome que o método na classe pai.
- Tem a mesma assinatura (número e tipos de parâmetros) e ordem de parâmetros.
- Tem um tipo de retorno compatível com o tipo de retorno do método na classe pai (covariância, se aplicável).
- Tem um modificador de acesso igual ou mais amplo do que o método na classe pai (na maioria das linguagens orientadas a objetos).
- 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.