Sobes.tech
Junior

Care este diferența dintre abstractizare și polimorfism?

sobes.tech AI

Răspuns de la AI

Abstracția se concentrează pe ascunderea detaliilor de implementare și pe furnizarea unei reprezentări simplificate a obiectului. Polimorfismul permite tratarea obiectelor din clase diferite ca obiecte ale unei clase de bază sau interfețe, efectuând acțiuni specifice pentru fiecare obiect.

Caracteristică Abstracție Polimorfism
Esenta Ascunderea detaliilor, oferirea unei viziuni generale Capacitatea de a trata obiecte de tipuri diferite în mod uniform
Scop Simplificare, reducerea complexității Flexibilitate, extensibilitate, universalitate a codului
Cum se realizează Clase abstracte, interfețe Suprasarcină de metode, suprascriere de metode, interfețe
Exemplu Clasa Mașină fără detalii despre motor Metoda merge() în diferite clase (Sedan, Camion)

Exemplu de abstracție (utilizarea abstracției):

interface Formă {
    // Metodă abstractă
    double calculeazăAria(); 
}

class Cerc implementează Formă {
    private double rază;

    public Cerc(double rază) {
        this.rază = rază;
    }

    @Override
    public double calculeazăAria() {
        // Detaliile de implementare sunt ascunse în spatele metodei interfeței
        return Math.PI * rază * rază; 
}
}

Exemplu de polimorfism:

// Utilizarea polimorfismului
Formă formaMea = new Cerc(5); 
// Apelarea metodei calculeazăAria() prin referința de tip de bază (interfața Formă)
// În mod efectiv, va fi executată metoda calculeazăAria() din clasa Cerc
double aria = formaMea.calculeazăAria(); 

System.out.println("Aria: " + aria);