Каково назначение каждого из четырёх принципов ООП?

«Каково назначение каждого из четырёх принципов ООП?» — вопрос из категории ООП, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

1. Инкапсуляция

  • Назначение: Скрытие внутренней реализации и защита данных объекта от несанкционированного доступа.
  • Почему важно: Позволяет изменять внутреннюю логику класса, не затрагивая код, который его использует.
  • Пример:

    class BankAccount {
    private double balance; // Поле скрыто
    
    public void deposit(double amount) {
        if (amount > 0) balance += amount; // Контролируемое изменение
    }
    }

2. Наследование

  • Назначение: Создание иерархии классов для повторного использования кода и установления отношений "является" (is-a).
  • Почему важно: Устраняет дублирование кода и организует систему в логическую структуру.
  • Пример:
    class Animal { /* общие свойства */ }
    class Dog extends Animal { /* специфичные для собаки */ }

3. Полиморфизм

  • Назначение: Возможность объектов разных классов обрабатываться через общий интерфейс.
  • Почему важно: Позволяет писать гибкий, расширяемый код, который работает с абстракциями.
  • Пример:
    Shape shape = new Circle(); // или new Square()
    shape.draw(); // Вызовется правильная реализация

4. Абстракция

  • Назначение: Выделение существенных характеристик объекта и игнорирование несущественных деталей.
  • Почему важно: Упрощает сложные системы, позволяя работать с концепциями высокого уровня.
  • Пример: Интерфейс List абстрагирует концепцию списка, скрывая реализации ArrayList или LinkedList.