ООП (Объектно-Ориентированное Программирование) — это парадигма, организующая код вокруг объектов (данных + поведения), а не функций. В Java она строится на четырех китах:
1. Инкапсуляция — скрытие внутреннего состояния объекта (private) и доступ к нему только через публичные методы. Защищает данные от хаотичного изменения.
2. Наследование (extends) — создание нового класса на основе существующего, переиспользование кода и иерархия "является" (Cat is Animal).
3. Полиморфизм — способность одного интерфейса иметь разные реализации. Это позволяет работать с объектами разных классов через единый родительский тип, используя переопределение методов.
4. Абстракция — выделение только важных характеристик, игнорируя несущественные детали (через abstract классы и интерфейсы).
В Java именно ООП диктует архитектуру: всё — объекты (кроме примитивов), а интерфейсы задают контракты для гибких и расширяемых систем.