Sobes.tech
Junior

Каква е разликата между абстракция и полиморфизъм?

sobes.tech AI

Отговор от AI

Абстракцията се фокусира върху скриването на детайлите за реализиране и предоставянето на опростено представяне на обекта. Полиморфизмът позволява обработката на обекти от различни класове като обекти на базов клас или интерфейс, изпълнявайки специфични действия за всеки обект.

Характеристика Абстракция Полиморфизъм
Същност Скриване на детайлите, предоставяне на общ изглед Възможност за обработка на обекти от различни типове по единен начин
Цел Упростяване, намаляване на сложността Гъвкавост, разширяемост, универсалност на кода
Как се постига Абстрактни класове, интерфейси Пренатоварване на методи, презаписване на методи, интерфейси
Пример Клас Автомобил без детайли за двигателя Метод отиване() в различни класове (Лек автомобил, Товарен автомобил)

Пример за абстракция (използване на абстракция):

interface Форма {
    // Абстрактен метод
    double изчислиПлощ(); 
}

class Кръг implements Форма {
    private double радиус;

    public Кръг(double радиус) {
        this.радиус = радиус;
    }

    @Override
    public double изчислиПлощ() {
        // Детайлите за реализиране са скрити зад метода на интерфейса
        return Math.PI * радиус * радиус; 
}
}

Пример за полиморфизъм:

// Използване на полиморфизъм
Форма моятаФорма = new Кръг(5); 
// Викаме метода изчислиПлощ() чрез референция към базовия тип (интерфейс Форма)
// В действителност ще се изпълни методът изчислиПлощ() от класа Кръг
double площ = моятаФорма.изчислиПлощ(); 

System.out.println("Площ: " + площ);