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("Площ: " + площ);