Sobes.tech
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);