Middle
O que é polimorfismo dinâmico em Java?
sobes.tech IA
Resposta da IA
A implementação dinâmica (ou polimorfismo em tempo de execução) é realizada através da sobrescrita de métodos (override). Isto significa que a decisão de qual método será chamado é tomada em tempo de execução, não em tempo de compilação.
Pontos-chave:
- Herança: Requer uma hierarquia de classes onde a subclasse herda da superclasse.
- Sobrescrita: A subclasse fornece sua própria implementação de um método que já está declarado na superclasse.
- Referência à superclasse: Um objeto da subclasse pode ser atribuído a uma referência de tipo superclasse.
- Chamada de método: Ao chamar um método sobrescrito através de uma referência à superclasse, será executada a implementação do objeto real (subclasse).
Exemplo:
// Superclasse
class Animal {
public void makeSound() {
System.out.println("Som desconhecido");
}
}
// Subclasse
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Au!");
}
}
// Subclasse
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Miau!");
}
}
// Uso do polimorfismo
class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Referência à superclasse aponta para objeto de subclasse
Animal myCat = new Cat();
myDog.makeSound(); // Chama o método de Dog
myCat.makeSound(); // Chama o método de Cat
}
}
Vantagens:
- Flexibilidade: Permite tratar objetos de diferentes subclasses de forma uniforme através de uma referência comum à superclasse.
- Extensibilidade: Facilmente adiciona novas subclasses sem modificar o código existente que usa a referência à superclasse.
- Simplificação do código: Permite escrever um código mais genérico.