Почему нарушение инкапсуляции? Мы когда создаём класс, предоставляем тот интерфейс взаимодействия который необходим. Просто наследование связывает руки, в том случае, когда у одного из наследников этот интерфейс хотелось бы изменить, да солид не даёт.
Если мы храним ссылки на чужой двигатель автомобиля который каруселит по дорогам, это нарушение инкапсуляции, хотя с двигателем плохой пример так как это композиция а не агрегация. А вот если у нас будет удаленный доступ к прибору который считывает данные двигателя, то все пучком.