Да, это нарушает инкапсуляцию так же, как и ваши переменные как открытые. Только сложнее, так как его сложнее обнаружить.
Так что обычно этого следует избегать. Существуют случаи, когда это может быть необходимо, и если вы можете быть достаточно уверены, что вызываемый не будет делать неприятных действий с открытыми внутренними данными, это может быть приемлемым. Обратите внимание, что в этом случае он создает тесную связь между двумя классами, поэтому они становятся единым компонентом.