Sobes.tech
Junior

Qual è la differenza tra astrazione e polimorfismo?

sobes.tech AI

Risposta dell'AI

L'astrazione si concentra sulla nascosta dei dettagli di implementazione e sulla fornitura di una rappresentazione semplificata dell'oggetto. Il polimorfismo permette di trattare oggetti di diverse classi come oggetti di una classe base o interfaccia, eseguendo azioni specifiche per ogni oggetto.

Caratteristica Astrazione Polimorfismo
Sostanza Nascondere i dettagli, fornire una vista generale La capacità di trattare oggetti di tipi diversi in modo uniforme
Obiettivo Semplificazione, riduzione della complessità Flessibilità, estensibilità, universalità del codice
Come si ottiene Classi astratte, interfacce Sovraccarico di metodi, overriding di metodi, interfacce
Esempio Classe Auto senza dettagli del motore Metodo muoversi() in diverse classi (Auto, Camion)

Esempio di astrazione (uso dell'astrazione):

interface Forma {
    // Metodo astratto
    double calcolaArea(); 
}

class Cerchio implements Forma {
    private double raggio;

    public Cerchio(double raggio) {
        this.raggio = raggio;
    }

    @Override
    public double calcolaArea() {
        // I dettagli di implementazione sono nascosti dietro il metodo dell'interfaccia
        return Math.PI * raggio * raggio; 
}
}

Esempio di polimorfismo:

// Uso del polimorfismo
Forma miaForma = new Cerchio(5); 
// Chiamata al metodo calcolaArea() tramite il riferimento del tipo base (interfaccia Forma)
// Verrà effettivamente eseguito il metodo calcolaArea() della classe Cerchio
double area = miaForma.calcolaArea(); 

System.out.println("Area: " + area);