Как уже указывалось в некоторых ответах, set / get не нужно фактически устанавливать или возвращать фактические члены.
Например, допустим, у вас есть класс Coordinate с set / get для (x, y). Внутренняя реализация может быть основана на полярных координатах:
private double radius;
private double angle;
и get / set для (x, y) выполняют преобразование координат с помощью sin и cos.
Вы можете изменить реализацию класса на любую другую систему координат по желанию и при этом просто оставить set / get for (x, y) в качестве открытых методов.
Итак, подведя итог, я могу ответить на этот вопрос следующим образом: открытый интерфейс класса может предоставлять set / get, но фактическая реализация может (и должна) быть скрыта, делая все члены частными (или защищенными). Таким образом, мы можем сказать, что общедоступный набор / получение личных данных - это «скрытие реализации», а не скрытие данных.