Sobes.tech
Junior

Aký je rozdiel medzi abstrakciou a polymorfizmom?

sobes.tech AI

Odpoveď od AI

Abstrakcia sa zameri na skrytie detailov implementácie a poskytnutie zjednodušeného zobrazenia objektu. Polymorfizmus umožňuje spracovanie objektov rôznych tried ako objektov jednej základnej triedy alebo rozhrania, pričom vykonáva špecifické akcie pre každý objekt.

Charakteristika Abstrakcia Polymorfizmus
Podstata Skrytie detailov, poskytovanie všeobecného pohľadu Schopnosť spracovať objekty rôznych typov jednotným spôsobom
Cieľ Zjednodušenie, zníženie zložitosti Flexibilita, rozšíriteľnosť, univerzálnosť kódu
Ako sa dosahuje Abstraktné triedy, rozhrania Preťaženie metód, prepísanie metód, rozhrania
Príklad Trieda Auto bez detailov motora Metóda ísť() v rôznych triedach (Osobné, Nákladné)

Príklad abstrakcie (použitie abstrakcie):

interface Tvar {
    // Abstraktná metóda
    double vypočítajPlochu(); 
}

class Kruh implements Tvar {
    private double polomer;

    public Kruh(double polomer) {
        this.polomer = polomer;
    }

    @Override
    public double vypočítajPlochu() {
        // Detaily implementácie sú skryté za metódou rozhrania
        return Math.PI * polomer * polomer; 
}
}

Príklad polymorfizmu:

// Použitie polymorfizmu
Tvar mojaForma = new Kruh(5); 
// Volanie metódy vypočítajPlochu() cez odkaz na základný typ (rozhranie Tvar)
// V skutočnosti bude vykonaná metóda vypočítajPlochu() z triedy Kruh
double plocha = mojaForma.vypočítajPlochu(); 

System.out.println("Plocha: " + plocha);