Sobes.tech
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"