ENIGMA AI
ENIGMA AI

Что такое ООП?

встречается 12× junior oop

Как ответить

ООП — это подход к проектированию программ, в котором данные и методы их обработки объединяются в объекты. Вместо того чтобы писать процедуры, которые оперируют разрозненными данными, мы описываем сущности предметной области и их взаимодействие.

Четыре базовых принципа ООП:

  • Инкапсуляция — скрытие внутреннего устройства объекта. Внешний код не должен напрямую менять поля объекта, только через публичные методы. В Java это модификаторы доступа private/protected/public. Пример: класс BankAccount с private полем balance и методами deposit()/withdraw(), которые проверяют лимиты.
  • Наследование — создание нового класса на основе существующего. Дочерний класс получает поля и методы родителя и может их переопределить. В Java — extends. Пример: класс Car наследует Vehicle, добавляя поле numberOfDoors и переопределяя метод startEngine().
  • Полиморфизм — один интерфейс, разная реализация. Позволяет работать с объектами разных типов через общий предок или интерфейс. В Java — переопределение методов (override) и перегрузка (overload). Пример: List<Animal> animals содержит Cat и Dog; вызов animal.makeSound() даёт "meow" или "bark".
  • Абстракция — выделение существенных характеристик объекта и игнорирование несущественных. В Java — абстрактные классы и интерфейсы. Пример: интерфейс Drawable с методом draw(), неважно, как именно рисует круг или квадрат.

На практике ООП упрощает поддержку кода: изменения в одном классе реже ломают другие части программы. Для junior-разработчика важно понимать, что наследование часто ведёт к жёстким связям, поэтому лучше предпочитать композицию — передачу объектов через конструктор. Например, не наследовать ReportGenerator от DatabaseConnection, а передавать DatabaseConnection в конструктор ReportGenerator.

Основные понятия, которые нужно знать: класс (шаблон), объект (экземпляр), конструктор, this/self, статические методы и поля, геттеры/сеттеры. Типичная ошибка новичка — делать все поля публичными или создавать глубокие иерархии наследования.

В реальных проектах ООП применяется вместе с принципами SOLID. Например, Dependency Inversion: класс OrderProcessor не должен сам создавать объект DatabaseLogger, ему передают интерфейс Logger в конструктор. Это позволяет легко менять логирование (файл, консоль, удалённый сервис) без изменения OrderProcessor.

Ключевые тезисы

  • ООП — это способ организации кода через объекты, объединяющие данные и методы.
  • Четыре принципа: инкапсуляция, наследование, полиморфизм, абстракция.
  • Инкапсуляция защищает данные через модификаторы доступа.
  • Полиморфизм позволяет единообразно работать с разными типами через общий интерфейс.
  • Композиция предпочтительнее наследования для гибкости кода.

Что спросят дальше

  • — В чём разница между абстрактным классом и интерфейсом в Java?
  • — Приведи пример, когда наследование создаёт проблемы, и как их решить через композицию.
  • — Что такое SOLID? Как принцип открытости/закрытости (OCP) связан с полиморфизмом?

Готовьтесь к собеседованию с ENIGMA AI

AI-суфлёр подсказывает ответы прямо на собеседовании в реальном времени — незаметно для интервьюера.

Скачать приложение