Назад к вопросам
Junior
203
questionbank
В чем разница между абстракцией и полиморфизмом?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Абстракция сосредоточена на скрытии деталей реализации и предоставлении упрощенного представления объекта. Полиморфизм позволяет обрабатывать объекты разных классов как объекты одного базового класса или интерфейса, выполняя специфические для каждого объекта действия.
| Характеристика | Абстракция | Полиморфизм |
|---|---|---|
| Суть | Сокрытие деталей, предоставление общего вида | Возможность обработки объектов разных типов единообразно |
| Цель | Упрощение, снижение сложности | Гибкость, расширяемость, универсальность кода |
| Как достигается | Абстрактные классы, интерфейсы | Перегрузка методов, переопределение методов, интерфейсы |
| Пример | Класс Автомобиль без деталей двигателя |
Метод ехать() в разных классах (Легковушка, Грузовик) |
Пример абстракции (использование абстракции):
interface Shape {
// Абстрактный метод
double calculateArea();
}
class Circle implements Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double calculateArea() {
// Детали реализации скрыты за методом интерфейса
return Math.PI * radius * radius;
}
}
Пример полиморфизма:
// Использование полиморфизма
Shape myShape = new Circle(5);
// Вызов метода calculateArea() через ссылку базового типа (интерфейса Shape)
// Фактически будет выполнен метод calculateArea() из класса Circle
double area = myShape.calculateArea();
System.out.println("Площадь: " + area);