Sobes.tech
Junior

Qual é a diferença entre abstração e polimorfismo?

sobes.tech IA

Resposta da IA

A abstração concentra-se em ocultar detalhes de implementação e fornecer uma representação simplificada do objeto. O polimorfismo permite tratar objetos de diferentes classes como objetos de uma classe base ou interface comum, realizando ações específicas para cada objeto.

Característica Abstração Polimorfismo
Essência Ocultar detalhes, fornecer uma visão geral A capacidade de tratar objetos de diferentes tipos de forma uniforme
Objetivo Simplificação, redução de complexidade Flexibilidade, extensibilidade, universalidade do código
Como é alcançado Classes abstratas, interfaces Sobrecarga de métodos, sobrescrita de métodos, interfaces
Exemplo Classe Automóvel sem detalhes do motor Método mover() em diferentes classes (Carro, Caminhão)

Exemplo de abstração (uso de abstração):

interface Forma {
    // Método abstrato
    double calcularArea(); 
}

class Circulo implements Forma {
    private double raio;

    public Circulo(double raio) {
        this.raio = raio;
    }

    @Override
    public double calcularArea() {
        // Detalhes de implementação estão ocultos atrás do método da interface
        return Math.PI * raio * raio; 
    }
}

Exemplo de polimorfismo:

// Uso do polimorfismo
Forma minhaForma = new Circulo(5); 
// Chamada do método calcularArea() através da referência do tipo base (interface Forma)
// Na prática, será executado o método calcularArea() da classe Circulo
double area = minhaForma.calcularArea(); 

System.out.println("Área: " + area);