Назад к вопросам
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);