Sobes.tech
Junior

¿Cuál es la diferencia entre abstracción y polimorfismo?

sobes.tech AI

Respuesta de la IA

La abstracción se centra en ocultar los detalles de implementación y proporcionar una representación simplificada del objeto. El polimorfismo permite tratar objetos de diferentes clases como objetos de una clase base o interfaz común, realizando acciones específicas para cada objeto.

Característica Abstracción Polimorfismo
Esencia Ocultar detalles, ofrecer una vista general La capacidad de tratar objetos de diferentes tipos de manera uniforme
Objetivo Simplificación, reducción de complejidad Flexibilidad, extensibilidad, universalidad del código
Cómo se logra Clases abstractas, interfaces Sobrecarga de métodos, sobrescritura de métodos, interfaces
Ejemplo Clase Automóvil sin detalles del motor Método mover() en diferentes clases (Auto, Camión)

Ejemplo de abstracción (uso de abstracción):

interface Forma {
    // Método abstracto
    double calcularÁrea(); 
}

class Círculo implements Forma {
    private double radio;

    public Círculo(double radio) {
        this.radio = radio;
    }

    @Override
    public double calcularÁrea() {
        // Los detalles de implementación están ocultos tras el método de la interfaz
        return Math.PI * radio * radio; 
    }
}

Ejemplo de polimorfismo:

// Uso del polimorfismo
Forma miForma = new Círculo(5); 
// Llamada al método calcularÁrea() a través de la referencia del tipo base (interfaz Forma)
// En realidad se ejecutará el método calcularÁrea() de la clase Círculo
double área = miForma.calcularÁrea(); 

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