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);