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