Junior
Jaký je rozdíl mezi abstrakcí a polymorfismem?
sobes.tech AI
Odpověď od AI
Abstrakce se zaměřuje na skrytí detailů implementace a poskytování zjednodušeného zobrazení objektu. Polymorfismus umožňuje zpracovávat objekty různých tříd jako objekty jedné základní třídy nebo rozhraní, přičemž provádí specifické akce pro každý objekt.
| Charakteristika | Abstrakce | Polymorfismus |
|---|---|---|
| Podstata | Skrytí detailů, poskytování obecného pohledu | Schopnost zacházet s objekty různých typů jednotným způsobem |
| Cíl | Zjednodušení, snížení složitosti | Flexibilita, rozšiřitelnost, univerzálnost kódu |
| Jak je dosaženo | Abstraktní třídy, rozhraní | Přetížení metod, přepsání metod, rozhraní |
| Příklad | Třída Auto bez detailů motoru |
Metoda jet() v různých třídách (OsobníAuto, NákladníAuto) |
Příklad abstrakce (použití abstrakce):
interface Tvar {
// Abstraktní metoda
double vypočtiPlochu();
}
class Kruh implements Tvar {
private double polomer;
public Kruh(double polomer) {
this.polomer = polomer;
}
@Override
public double vypočtiPlochu() {
// Detaily implementace jsou skryty za metodou rozhraní
return Math.PI * polomer * polomer;
}
}
Příklad polymorfismu:
// Použití polymorfismu
Tvar mujTvar = new Kruh(5);
// Volání metody vypočtiPlochu() přes odkaz na základní typ (rozhraní Tvar)
// Ve skutečnosti bude provedena metoda vypočtiPlochu() z třídy Kruh
double plocha = mujTvar.vypočtiPlochu();
System.out.println("Plocha: " + plocha);