Junior — Middle
Qual é a diferença entre polimorfismo estático e dinâmico no contexto da programação orientada a objetos?
sobes.tech IA
Resposta da IA
O polimorfismo estático (polimorfismo em tempo de compilação) é implementado através da sobrecarga de métodos e operadores, onde a escolha da versão específica do método ocorre durante a compilação. Isto permite usar o mesmo método com diferentes parâmetros.
O polimorfismo dinâmico (polimorfismo em tempo de execução) é alcançado através da sobrescrita de métodos em classes herdadas e do uso de métodos virtuais. A seleção da implementação concreta do método ocorre durante a execução do programa, permitindo que os objetos se comportem de forma diferente dependendo do seu tipo real.
Exemplo de polimorfismo estático:
class Calculator {
int sum(int a, int b) { return a + b; }
double sum(double a, double b) { return a + b; }
}
Exemplo de polimorfismo dinâmico:
class Animal {
void sound() { System.out.println("Algum som"); }
}
class Dog extends Animal {
@Override
void sound() { System.out.println("Latido"); }
}
Animal a = new Dog();
a.sound(); // Vai imprimir "Latido"