Введение в композицию объектов в Java
Композиция - когда один объект хранит ссылки на другие и поручает им часть работы. Снаружи клиент обращается к вашему типу, а внутри вызов может уйти во вложенный экземпляр с узкой обязанностью: проверить текст, оформить строку, записать данные.
Такой приём дополняет наследование. Родитель задаёт общую линию типов «является разновидностью», а композиция описывает связь «состоит из» или «использует»: у записи есть автор, у редактора - валидатор, у отчёта - форматтер.
В Java композиция выражается обычными полями класса.
Зависимость можно создать внутри класса, передать в конструктор
или записать в private final поле. Методы внешнего
объекта при необходимости вызывают методы вложенных - это
делегирование без синтаксической магии: каждый
перенаправленный вызов виден в коде.
Если общее поведение описано интерфейсом, класс может реализовать контракт, передавая вызовы готовому объекту. Тогда реализацию подменяют, не переписывая обёртку.
Дальше раздел пройдёт от простого «объект внутри объекта» к хранению зависимостей, явному делегированию, выбору композиции вместо наследования и сборке поведения через интерфейсы.